lkml.org 
[lkml]   [2021]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 201/315] sctp: add size validation when walking chunks
    Date
    From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>

    [ Upstream commit 50619dbf8db77e98d821d615af4f634d08e22698 ]

    The first chunk in a packet is ensured to be present at the beginning of
    sctp_rcv(), as a packet needs to have at least 1 chunk. But the second
    one, may not be completely available and ch->length can be over
    uninitialized memory.

    Fix here is by only trying to walk on the next chunk if there is enough to
    hold at least the header, and then proceed with the ch->length validation
    that is already there.

    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/sctp/input.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/net/sctp/input.c b/net/sctp/input.c
    index 7380f0a5949b..1af35b69e99e 100644
    --- a/net/sctp/input.c
    +++ b/net/sctp/input.c
    @@ -1197,7 +1197,7 @@ static struct sctp_association *__sctp_rcv_walk_lookup(struct net *net,

    ch = (struct sctp_chunkhdr *)ch_end;
    chunk_num++;
    - } while (ch_end < skb_tail_pointer(skb));
    + } while (ch_end + sizeof(*ch) < skb_tail_pointer(skb));

    return asoc;
    }
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-19 18:10    [W:4.050 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site