Messages in this thread | | | Date | Tue, 23 May 2023 09:21:41 -0600 | Subject | Re: [PATCH net] ipv6: Fix out-of-bounds access in ipv6_find_tlv() | From | David Ahern <> |
| |
On 5/23/23 2:29 AM, Gavrilov Ilia wrote: > optlen is fetched without checking whether there is more than one byte to parse. > It can lead to out-of-bounds access. > > Found by InfoTeCS on behalf of Linux Verification Center > (linuxtesting.org) with SVACE. > > Fixes: 3c73a0368e99 ("ipv6: Update ipv6 static library with newly needed functions")
That is not the right Fixes tag; that commit only moved the code.
Fixes: c61a40432509 ("[IPV6]: Find option offset by type.")
> Signed-off-by: Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru> > --- > net/ipv6/exthdrs_core.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/net/ipv6/exthdrs_core.c b/net/ipv6/exthdrs_core.c > index da46c4284676..49e31e4ae7b7 100644 > --- a/net/ipv6/exthdrs_core.c > +++ b/net/ipv6/exthdrs_core.c > @@ -143,6 +143,8 @@ int ipv6_find_tlv(const struct sk_buff *skb, int offset, int type) > optlen = 1; > break; > default: > + if (len < 2) > + goto bad; > optlen = nh[offset + 1] + 2; > if (optlen > len) > goto bad;
Reviewed-by: David Ahern <dsahern@kernel.org>
| |