]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Free all sig match structs when freeing a signature.
authorVictor Julien <victor@inliniac.net>
Mon, 2 Jul 2012 12:04:30 +0000 (14:04 +0200)
committerVictor Julien <victor@inliniac.net>
Mon, 2 Jul 2012 16:29:43 +0000 (18:29 +0200)
src/detect-parse.c

index c79f8c88726f84cd2337dcd588a9f157b0bf9661..c62ec8697693566a9dfce9467f003c77fb604e1b 100644 (file)
@@ -835,39 +835,14 @@ void SigFree(Signature *s) {
     if (s->CidrSrc != NULL)
         IPOnlyCIDRListFree(s->CidrSrc);
 
-    SigMatch *sm = s->sm_lists[DETECT_SM_LIST_MATCH], *nsm;
-    while (sm != NULL) {
-        nsm = sm->next;
-        SigMatchFree(sm);
-        sm = nsm;
-    }
-
-    sm = s->sm_lists[DETECT_SM_LIST_PMATCH];
-    while (sm != NULL) {
-        nsm = sm->next;
-        SigMatchFree(sm);
-        sm = nsm;
-    }
-
-    sm = s->sm_lists[DETECT_SM_LIST_UMATCH];
-    while (sm != NULL) {
-        nsm = sm->next;
-        SigMatchFree(sm);
-        sm = nsm;
-    }
-
-    sm = s->sm_lists[DETECT_SM_LIST_AMATCH];
-    while (sm != NULL) {
-        nsm = sm->next;
-        SigMatchFree(sm);
-        sm = nsm;
-    }
-
-    sm = s->sm_lists[DETECT_SM_LIST_TMATCH];
-    while (sm != NULL) {
-        nsm = sm->next;
-        SigMatchFree(sm);
-        sm = nsm;
+    int i;
+    for (i = 0; i < DETECT_SM_LIST_MAX; i++) {
+        SigMatch *sm = s->sm_lists[i], *nsm;
+        while (sm != NULL) {
+            nsm = sm->next;
+            SigMatchFree(sm);
+            sm = nsm;
+        }
     }
 
     DetectAddressHeadCleanup(&s->src);