]> The Tcpdump Group git mirrors - libpcap/commitdiff
Fixed a leak in pcap_open_live (win32): the pcap_t handle was not freed
authorrisso <risso>
Fri, 10 Jun 2005 03:52:19 +0000 (03:52 +0000)
committerrisso <risso>
Fri, 10 Jun 2005 03:52:19 +0000 (03:52 +0000)
if PacketOpenAdapter fails.
[The previous fix was in the wrong place].

pcap-win32.c

index 434ab7711a39c57681ce0f38f071048af262fd7d..e1f848d79359d51a19a665733faee2a820477b4f 100644 (file)
@@ -32,7 +32,7 @@
 
 #ifndef lint
 static const char rcsid[] _U_ =
-    "@(#) $Header: /tcpdump/master/libpcap/pcap-win32.c,v 1.27 2005-06-10 03:49:19 risso Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/libpcap/pcap-win32.c,v 1.28 2005-06-10 03:52:19 risso Exp $ (LBL)";
 #endif
 
 #include <pcap-int.h>
@@ -411,6 +411,7 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms,
        
        if (p->adapter == NULL)
        {
+               free(p);
                /* Adapter detected but we are not able to open it. Return failure. */
                snprintf(ebuf, PCAP_ERRBUF_SIZE, "Error opening adapter: %s", pcap_win32strerror());
                return NULL;
@@ -419,7 +420,6 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms,
        /*get network type*/
        if(PacketGetNetType (p->adapter,&type) == FALSE)
        {
-               free(p);
                snprintf(ebuf, PCAP_ERRBUF_SIZE, "Cannot determine the network type: %s", pcap_win32strerror());
                goto bad;
        }