X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=net%2Fipv6%2Fdatagram.c;h=410046a8cc915f5ea2f56a4c7b6c105f58d1903d;hb=e5a4a72d4f88f4389e9340d383ca67031d1b8536;hp=b9c2de84a8a212d137e1ba0c17bc1125dd5b288d;hpb=cc55875e26e2b85484b196edbada6caf84eb7765;p=linux-2.6 diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c index b9c2de84a8..410046a8cc 100644 --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c @@ -5,8 +5,6 @@ * Authors: * Pedro Roque * - * $Id: datagram.c,v 1.24 2002/02/01 22:01:04 davem Exp $ - * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version @@ -705,6 +703,11 @@ int datagram_send_ctl(struct net *net, } *hlimit = *(int *)CMSG_DATA(cmsg); + if (*hlimit < -1 || *hlimit > 0xff) { + err = -EINVAL; + goto exit_f; + } + break; case IPV6_TCLASS: @@ -729,7 +732,7 @@ int datagram_send_ctl(struct net *net, LIMIT_NETDEBUG(KERN_DEBUG "invalid cmsg type: %d\n", cmsg->cmsg_type); err = -EINVAL; - break; + goto exit_f; } }