From 23f35561451f440245030507f87dedfed0fdf2c5 Mon Sep 17 00:00:00 2001 From: Gamma Date: Thu, 26 Oct 2017 09:47:53 +0700 Subject: [PATCH] [Fix] Memory leak with CSList::ThrowAll() in NTFS_Common.h --- Exfiltration/NTFSParser/NTFSParser/NTFS_Common.h | 9 +++++++++ Exfiltration/NTFSParser/NTFSParserDLL/NTFS_Common.h | 9 +++++++++ 2 files changed, 18 insertions(+) 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;