diff --git a/Exfiltration/NTFSParser/NTFSParser/NTFS_Common.h b/Exfiltration/NTFSParser/NTFSParser/NTFS_Common.h index b7c2813d..06f87fe2 100644 --- a/Exfiltration/NTFSParser/NTFSParser/NTFS_Common.h +++ b/Exfiltration/NTFSParser/NTFSParser/NTFS_Common.h @@ -220,6 +220,15 @@ class CSList // Caution! All entries are just thrown without free __inline void ThrowAll() { + // Must free NTSLIST_ENTRY because InsertEntry() doesn't copy this pointer + while (ListHead) + { + ListCurrent = ListHead->Next; + ListHead->Entry = NULL; + delete ListHead; + + ListHead = ListCurrent; + } ListHead = ListTail = NULL; ListCurrent = NULL; EntryCount = 0; diff --git a/Exfiltration/NTFSParser/NTFSParserDLL/NTFS_Common.h b/Exfiltration/NTFSParser/NTFSParserDLL/NTFS_Common.h index b7c2813d..06f87fe2 100644 --- a/Exfiltration/NTFSParser/NTFSParserDLL/NTFS_Common.h +++ b/Exfiltration/NTFSParser/NTFSParserDLL/NTFS_Common.h @@ -220,6 +220,15 @@ class CSList // Caution! All entries are just thrown without free __inline void ThrowAll() { + // Must free NTSLIST_ENTRY because InsertEntry() doesn't copy this pointer + while (ListHead) + { + ListCurrent = ListHead->Next; + ListHead->Entry = NULL; + delete ListHead; + + ListHead = ListCurrent; + } ListHead = ListTail = NULL; ListCurrent = NULL; EntryCount = 0;