If "pcap_compile()" fails to compile an empty filter string (because,

for example, the libpcap code generator doesn't support the link-layer
type for the capture), "dfilter_compile()" will succeed but return a
null rfcode pointer.

In that case, instead of telling people that it looks like a valid
display filter (which it does, but it also looks like a complete list of
all the Basque words likely to be known by Hammurabi :-)), and then
crashing when we try to "free" that non-existent dfilter code, we just
report it as a "sorry, couldn't compile that capture filter.

svn path=/trunk/; revision=9912
This commit is contained in:
Guy Harris 2004-01-31 01:32:51 +00:00
parent 70fa1b55ff
commit d90d26ece2
1 changed files with 2 additions and 2 deletions

View File

@ -1,7 +1,7 @@
/* capture.c
* Routines for packet capture windows
*
* $Id: capture.c,v 1.228 2004/01/25 21:55:09 guy Exp $
* $Id: capture.c,v 1.229 2004/01/31 01:32:51 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -1532,7 +1532,7 @@ capture(gboolean *stats_known, struct pcap_stat *stats)
}
if (pcap_compile(pch, &fcode, cfile.cfilter, 1, netmask) < 0) {
dfilter_t *rfcode = NULL;
if (dfilter_compile(cfile.cfilter, &rfcode)) {
if (dfilter_compile(cfile.cfilter, &rfcode) && rfcode != NULL) {
snprintf(errmsg, sizeof errmsg,
"Unable to parse capture filter string (%s).\n"
" Interestingly enough, this looks like a valid display filter\n"