]> The Tcpdump Group git mirrors - libpcap/commitdiff
Plug some leaks.
authorguy <guy>
Thu, 10 Apr 2008 03:10:33 +0000 (03:10 +0000)
committerguy <guy>
Thu, 10 Apr 2008 03:10:33 +0000 (03:10 +0000)
pcap-bpf.c

index 0ab60a989250290e1fa86a32352a7ebb9a8bf553..92394ccdfb7511f77e3c0cb9b166fb61cc719a13 100644 (file)
@@ -20,7 +20,7 @@
  */
 #ifndef lint
 static const char rcsid[] _U_ =
-    "@(#) $Header: /tcpdump/master/libpcap/pcap-bpf.c,v 1.108 2008-04-09 21:26:12 guy Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/libpcap/pcap-bpf.c,v 1.109 2008-04-10 03:10:33 guy Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -1077,7 +1077,8 @@ pcap_activate_bpf(pcap_t *p)
        if (p->md.device == NULL) {
                snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "strdup: %s",
                     pcap_strerror(errno));
-               return PCAP_ERROR;
+               status = PCAP_ERROR;
+               goto bad;
        }
 
        /*
@@ -1672,6 +1673,14 @@ pcap_activate_bpf(pcap_t *p)
        return (status);
  bad:
        (void)close(fd);
+       if (p->dlt_list != NULL) {
+               free(p->dlt_list);
+               p->dlt_list = NULL;
+       }
+       if (p->md.device != NULL) {
+               free(p->md.device);
+               p->md.device = NULL;
+       }
        if (p->buffer != NULL) {
                free(p->buffer);
                p->buffer = NULL;