diff --git a/src/source-af-packet.c b/src/source-af-packet.c index 1c9ca3beb4..bf40ad2e3d 100644 --- a/src/source-af-packet.c +++ b/src/source-af-packet.c @@ -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; }