diff options
author | eadler <eadler@FreeBSD.org> | 2014-02-04 03:01:33 +0000 |
---|---|---|
committer | eadler <eadler@FreeBSD.org> | 2014-02-04 03:01:33 +0000 |
commit | 7034cd98a43fb0ab11a0fd3d1779c16e22a5c383 (patch) | |
tree | 341c8791a46a3adc4568e4590b929c25ef5d81ea | |
parent | 8f40ca632d571c9f82c208f0e6d5389bbe92dd89 (diff) | |
download | FreeBSD-src-7034cd98a43fb0ab11a0fd3d1779c16e22a5c383.zip FreeBSD-src-7034cd98a43fb0ab11a0fd3d1779c16e22a5c383.tar.gz |
libc/net: Fix some issues in inet6_opt_init() (from RFC 3542):
* The RFC says (in section 10.1) that only when extbuf is not NULL,
extlen shall be checked, so don't perform this check when NULL is
passed.
* socklen_t is unsigned, so checking extlen for less than zero is
not needed.
Submitted by: swildner@dragonflybsd.org
Reviewed by: Mark Martinec <Mark.Martinec+freebsd@ijs.si>
Reviewed by: hrs
Obtained by: DragonFlyBSD
-rw-r--r-- | lib/libc/net/ip6opt.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/lib/libc/net/ip6opt.c b/lib/libc/net/ip6opt.c index 003c625..b046e73 100644 --- a/lib/libc/net/ip6opt.c +++ b/lib/libc/net/ip6opt.c @@ -381,11 +381,8 @@ inet6_opt_init(void *extbuf, socklen_t extlen) { struct ip6_ext *ext = (struct ip6_ext *)extbuf; - if (extlen < 0 || (extlen % 8)) - return(-1); - if (ext) { - if (extlen == 0) + if (extlen == 0 || (extlen % 8)) return(-1); ext->ip6e_len = (extlen >> 3) - 1; } |