diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-08-27 20:58:48 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-08-27 20:58:48 +0200 |
commit | 5c945a0b4891a20deeb023b3bd40dee5dda1aaff (patch) | |
tree | 662d3bdc8aeb87ad4480a6876658245ca5ca615b /sys/src/9/ip/icmp6.c | |
parent | cff1ab5fdf116183845581953ee4d8e2665770d4 (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.c | 4 |
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)) { |