]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #2242 in SNORT/snort3 from ~KATHARVE/snort3:coverity_fixes_search_...
authorMike Stepanek (mstepane) <mstepane@cisco.com>
Fri, 5 Jun 2020 18:44:07 +0000 (18:44 +0000)
committerMike Stepanek (mstepane) <mstepane@cisco.com>
Fri, 5 Jun 2020 18:44:07 +0000 (18:44 +0000)
Squashed commit of the following:

commit 9295d4275cd1f25662f546a86b5e4f438d1262e4
Author: Katura Harvey <katharve@cisco.com>
Date:   Thu Jun 4 17:11:14 2020 -0400

    search_engines: fix potential memory leaks and an error in a printed value

src/search_engines/bnfa_search.cc

index 4a39dc015e0dea1e5b2d2f1e7add0a1e2543147b..92d869bbb671597f8086706cebe638327bece3f8 100644 (file)
@@ -994,6 +994,7 @@ static int _bnfa_conv_list_to_csparse_array(bnfa_struct_t* bnfa)
         if ( pi[k] >= nps )
         {
             /* Fatal */
+            BNFA_FREE(pi,bnfa->bnfaNumStates*sizeof(bnfa_state_t),bnfa->nextstate_memory);
             return -1;
         }
 
@@ -1094,11 +1095,11 @@ void bnfaPrint(bnfa_struct_t* bnfa)
             ps_index++; /* skip state number */
 
             cw = ps[ps_index]; /* control word  */
-            fb = (cw &  BNFA_SPARSE_FULL_BIT)>>BNFA_SPARSE_VALUE_SHIFT;  /* full storage bit */
-            mb = (cw &  BNFA_SPARSE_MATCH_BIT)>>BNFA_SPARSE_VALUE_SHIFT; /* matching state bit */
+            fb = (cw &  BNFA_SPARSE_FULL_BIT)>>BNFA_SPARSE_VALUE_SHIFT;   /* full storage bit */
+            mb = (cw &  BNFA_SPARSE_MATCH_BIT)>>BNFA_SPARSE_VALUE_SHIFT;  /* matching state bit */
             nt = (cw &  BNFA_SPARSE_COUNT_BITS)>>BNFA_SPARSE_VALUE_SHIFT; /* number of transitions
                                                                             0-63 */
-            fs = (cw &  BNFA_SPARSE_MAX_STATE)>>BNFA_SPARSE_VALUE_SHIFT; /* fail state */
+            fs = (cw &  BNFA_SPARSE_MAX_STATE);                           /* fail state */
 
             ps_index++;  /* skip control word */
 
@@ -1277,7 +1278,7 @@ void bnfaFree(bnfa_struct_t* bnfa)
         bnfa->matchlist_memory);
     BNFA_FREE(bnfa->bnfaNextState,bnfa->bnfaNumStates*sizeof(bnfa_state_t*),
         bnfa->nextstate_memory);
-    BNFA_FREE(bnfa->bnfaTransList,(2*bnfa->bnfaNumStates+bnfa->bnfaNumTrans)*sizeof(bnfa_state_t*),
+    BNFA_FREE(bnfa->bnfaTransList,(2*bnfa->bnfaNumStates+bnfa->bnfaNumTrans)*sizeof(bnfa_state_t),
         bnfa->nextstate_memory);
     snort_free(bnfa);   /* cannot update memory tracker when deleting bnfa so just 'free' it !*/
 }