diff options
| author | Darren Reed <darrenr@FreeBSD.org> | 2000-05-09 23:35:24 +0000 |
|---|---|---|
| committer | Darren Reed <darrenr@FreeBSD.org> | 2000-05-09 23:35:24 +0000 |
| commit | 68b16578ca38b4082d4ed5d584d15e1c25c808e9 (patch) | |
| tree | 69739ea7ccc679d1470d215594c40a4fde7f47ba | |
| parent | e0ab5cb52310d5a06cdf59dd344407836ffb1b1f (diff) | |
Notes
| -rw-r--r-- | sys/netinet/fil.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sys/netinet/fil.c b/sys/netinet/fil.c index 3a5444ade0b3..bb53f4970bb9 100644 --- a/sys/netinet/fil.c +++ b/sys/netinet/fil.c @@ -285,13 +285,19 @@ getports: } - for (s = (u_char *)(ip + 1), hlen -= (int)sizeof(*ip); hlen; ) { + for (s = (u_char *)(ip + 1), hlen -= (int)sizeof(*ip); hlen > 0; ) { opt = *s; if (opt == '\0') break; - ol = (opt == IPOPT_NOP) ? 1 : (int)*(s+1); - if (opt > 1 && (ol < 2 || ol > hlen)) - break; + else if (opt == IPOPT_NOP) + ol = 1; + else { + if (hlen < 2) + break; + ol = (int)*(s + 1); + if (ol < 2 || ol > hlen) + break; + } for (i = 9, mv = 4; mv >= 0; ) { op = ipopts + i; if (opt == (u_char)op->ol_val) { |
