From 92580983ecad8d1c740e1a1939fce8a81c070a6f Mon Sep 17 00:00:00 2001 From: brc0x1 Date: Fri, 25 Aug 2017 04:43:52 -0700 Subject: [PATCH] Remove more leakage in cHashTable & policy parser --- src/core/hashtable.h | 10 +++++++--- src/twparser/genreparseinfo.cpp | 2 ++ src/twparser/yyparse.cpp | 3 +++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/core/hashtable.h b/src/core/hashtable.h index d3194f1..2944ea3 100644 --- a/src/core/hashtable.h +++ b/src/core/hashtable.h @@ -254,10 +254,14 @@ inline void cHashTableIter::SeekNextV { if(mpCurNode) mpCurNode = mpCurNode->next; - //mCurIndex++; - while((! mpCurNode) && (mCurIndex < mHashTable.mTableSize)) + + // if we're out of range, bail out w/o incrementing index + if(mCurIndex >= mHashTable.mTableSize) + return; + + while((! mpCurNode) && (++mCurIndex < mHashTable.mTableSize)) { - mpCurNode = mHashTable.mTable[++mCurIndex]; + mpCurNode = mHashTable.mTable[mCurIndex]; } } diff --git a/src/twparser/genreparseinfo.cpp b/src/twparser/genreparseinfo.cpp index ddcd68d..1e45d96 100644 --- a/src/twparser/genreparseinfo.cpp +++ b/src/twparser/genreparseinfo.cpp @@ -141,6 +141,8 @@ void cGenreParseInfo::InitPredefinedVariables() { mLocalPredefVarTable.Insert( sVarName, sValue ); } + + delete pGU; } diff --git a/src/twparser/yyparse.cpp b/src/twparser/yyparse.cpp index b90765e..715d27a 100644 --- a/src/twparser/yyparse.cpp +++ b/src/twparser/yyparse.cpp @@ -927,6 +927,7 @@ case YYr26: { /* rule : fco_name TWP_RARROW spec_masks */ // add to our lists cParserHelper::GetGenreInfo()->AddStopPoint( fcoName ); cParserHelper::GetGenreInfo()->AddRule( pnode ); + delete pGU; } delete yypvt[-2].mpStringList; @@ -959,6 +960,7 @@ case YYr27: { /* rule : TWP_BANG fco_name */ // add to stop list cParserHelper::GetGenreInfo()->AddStopPoint( fcoName ); + delete pGU; } delete yypvt[0].mpStringList; @@ -978,6 +980,7 @@ case YYr28: { /* spec_masks : prop_vector opt_spec_attributes */ yypvt[0].mpAttrList->MergeNoOverwrite( cParserHelper::GetGlobalAttrList() ); yyval.mpNode = pNode; + delete pGU; } delete yypvt[-1].mpString;