summaryrefslogtreecommitdiff
path: root/grammar.y
diff options
context:
space:
mode:
authorguy <guy>2006-05-16 08:30:05 +0000
committerguy <guy>2006-05-16 08:30:05 +0000
commit13a838cb485f0bad558dfa9359601175d3353dd5 (patch)
tree0264491e234b79cb6c92c4d257385a6132d0450f /grammar.y
parent6f754c86b27a422addc2dbfab79306fa62a0501f (diff)
downloadlibpcap-13a838cb485f0bad558dfa9359601175d3353dd5.tar.gz
Check for IPv4 addreses used with "port", "portrange", "proto", or
"protochain".
Diffstat (limited to 'grammar.y')
-rw-r--r--grammar.y10
1 files changed, 9 insertions, 1 deletions
diff --git a/grammar.y b/grammar.y
index 60539460..ad3b6edc 100644
--- a/grammar.y
+++ b/grammar.y
@@ -22,7 +22,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.91 2005-09-05 09:07:00 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.92 2006-05-16 08:30:05 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -188,6 +188,14 @@ nid: ID { $$.b = gen_scode($1, $$.q = $<blk>0.q); }
| HID {
/* Decide how to parse HID based on proto */
$$.q = $<blk>0.q;
+ if ($$.q.addr == Q_PORT)
+ bpf_error("'port' modifier applied to ip host");
+ else if ($$.q.addr == Q_PORTRANGE)
+ bpf_error("'portrange' modifier applied to ip host");
+ else if ($$.q.addr == Q_PROTO)
+ bpf_error("'proto' modifier applied to ip host");
+ else if ($$.q.addr == Q_PROTOCHAIN)
+ bpf_error("'protochain' modifier applied to ip host");
$$.b = gen_ncode($1, 0, $$.q);
}
| HID6 '/' NUM {