On Tue, Feb 04, 2014 at 08:35:02PM -0500, Eitan Adler wrote:
> Hi all,
>
> The following bug was recently fixed in DragonFlyBSD and FreeBSD:
>
> libc/net: Fix issue 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.
I understand the RFC and the man page the same way, OK bluhm@
>
> Obtained by: DragonFlyBSD
>
> Index: ip6opt.c
> ===================================================================
> RCS file: /cvs/src/lib/libc/net/ip6opt.c,v
> retrieving revision 1.4
> diff -u -r1.4 ip6opt.c
> --- ip6opt.c 9 Dec 2006 01:12:28 -0000 1.4
> +++ ip6opt.c 5 Feb 2014 01:30:21 -0000
> @@ -383,11 +383,8 @@
> {
> 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;
> }
>
>
>
> --
> Eitan Adler