Module Name: src
Committed By: ginsbach
Date: Sat Aug 12 00:43:25 UTC 2017
Modified Files:
src/external/bsd/libpcap/dist: gencode.c
Log Message:
PR lib/51952: Brad Harder: Apply upstream ada959c9
[From upstream tcpdump]
In pcap_compile(), first check whether the pcap_t is activated.
Before we allocate or otherwise set up anything, check whether the
pcap_t is activated, and set the error message string and return -1 if
it's not.
That way, we don't go through the cleanup code in that code path -
there's nothing to clean up.
Fixes the issue in GitHub pull request #552.
XXX: pullup-8
To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/external/bsd/libpcap/dist/gencode.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/bsd/libpcap/dist/gencode.c
diff -u src/external/bsd/libpcap/dist/gencode.c:1.9 src/external/bsd/libpcap/dist/gencode.c:1.10
--- src/external/bsd/libpcap/dist/gencode.c:1.9 Tue Jan 24 22:29:28 2017
+++ src/external/bsd/libpcap/dist/gencode.c Sat Aug 12 00:43:25 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: gencode.c,v 1.9 2017/01/24 22:29:28 christos Exp $ */
+/* $NetBSD: gencode.c,v 1.10 2017/08/12 00:43:25 ginsbach Exp $ */
/*#define CHASE_CHAIN*/
/*
@@ -23,7 +23,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: gencode.c,v 1.9 2017/01/24 22:29:28 christos Exp $");
+__RCSID("$NetBSD: gencode.c,v 1.10 2017/08/12 00:43:25 ginsbach Exp $");
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -669,6 +669,9 @@ int
pcap_compile(pcap_t *p, struct bpf_program *program,
const char *buf, int optimize, bpf_u_int32 mask)
{
+#ifdef _WIN32
+ static int done = 0;
+#endif
compiler_state_t cstate;
const char * volatile xbuf = buf;
yyscan_t scanner = NULL;
@@ -676,14 +679,6 @@ pcap_compile(pcap_t *p, struct bpf_progr
u_int len;
int rc;
-#ifdef _WIN32
- static int done = 0;
-
- if (!done)
- pcap_wsockinit();
- done = 1;
-#endif
-
/*
* If this pcap_t hasn't been activated, it doesn't have a
* link-layer type, so we can't use it.
@@ -691,9 +686,14 @@ pcap_compile(pcap_t *p, struct bpf_progr
if (!p->activated) {
pcap_snprintf(p->errbuf, PCAP_ERRBUF_SIZE,
"not-yet-activated pcap_t passed to pcap_compile");
- rc = -1;
- goto quit;
+ return -1;
}
+
+#ifdef _WIN32
+ if (!done)
+ pcap_wsockinit();
+ done = 1;
+#endif
initchunks(&cstate);
cstate.no_optimize = 0;
cstate.ai = NULL;