summaryrefslogtreecommitdiff
path: root/sys/src/9/ip/icmp6.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-08-27 20:58:48 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2018-08-27 20:58:48 +0200
commit5c945a0b4891a20deeb023b3bd40dee5dda1aaff (patch)
tree662d3bdc8aeb87ad4480a6876658245ca5ca615b /sys/src/9/ip/icmp6.c
parentcff1ab5fdf116183845581953ee4d8e2665770d4 (diff)
devip: fix router adv/sol options validation (options padded to 8 bytes)
Diffstat (limited to 'sys/src/9/ip/icmp6.c')
-rw-r--r--sys/src/9/ip/icmp6.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/src/9/ip/icmp6.c b/sys/src/9/ip/icmp6.c
index bceb6aeff..b814070de 100644
--- a/sys/src/9/ip/icmp6.c
+++ b/sys/src/9/ip/icmp6.c
@@ -617,7 +617,7 @@ valid(Proto *icmp, Ipifc *ifc, Block *bp, Icmppriv6 *ipriv)
goto err;
}
sz = IPICMPSZ + 8;
- while (sz+1 < pktsz) {
+ while (sz+8 <= pktsz) {
osz = packet[sz+1];
if(osz <= 0) {
ipriv->stats[OptlenErrs6]++;
@@ -634,7 +634,7 @@ valid(Proto *icmp, Ipifc *ifc, Block *bp, Icmppriv6 *ipriv)
}
unsp = (ipcmp(p->src, v6Unspecified) == 0);
sz = IPICMPSZ + 8;
- while (sz+1 < pktsz) {
+ while (sz+8 <= pktsz) {
osz = packet[sz+1];
if(osz <= 0 ||
(unsp && packet[sz] == SRC_LLADDR)) {