]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
afpacket: free ring mem on error
authorVictor Julien <victor@inliniac.net>
Tue, 29 Aug 2017 10:57:53 +0000 (12:57 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 29 Aug 2017 10:57:53 +0000 (12:57 +0200)
src/source-af-packet.c

index b225057fbfb2fa07d16ead4599b5f6c813721105..761c634a85f9bcf42d2783807ca28aa2d2958585 100644 (file)
@@ -2041,8 +2041,7 @@ static int AFPCreateSocket(AFPThreadVars *ptv, char *devname, int verbose)
             break;
     }
 
-    TmEcode rc;
-    rc = AFPSetBPFFilter(ptv);
+    TmEcode rc = AFPSetBPFFilter(ptv);
     if (rc == TM_ECODE_FAILED) {
         SCLogError(SC_ERR_AFP_CREATE, "Set AF_PACKET bpf filter \"%s\" failed.", ptv->bpf_filter);
         ret = AFP_FATAL_ERROR;
@@ -2056,6 +2055,18 @@ static int AFPCreateSocket(AFPThreadVars *ptv, char *devname, int verbose)
 socket_err:
     close(ptv->socket);
     ptv->socket = -1;
+    if (ptv->flags & AFP_TPACKET_V3) {
+        if (ptv->ring_v3) {
+            SCFree(ptv->ring_v3);
+            ptv->ring_v3 = NULL;
+        }
+    } else {
+        if (ptv->ring_v2) {
+            SCFree(ptv->ring_v2);
+            ptv->ring_v2 = NULL;
+        }
+    }
+
 error:
     return -ret;
 }