Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4162553pxv; Mon, 19 Jul 2021 18:56:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxMBwd+zPkQs0iYKXvl1hV/mEG4JCn6AfFZIj6Ku7zxtQnMMwWIwNRvjmGP+Q339ThM7hpq X-Received: by 2002:a05:6e02:5cf:: with SMTP id l15mr18705203ils.90.1626746183538; Mon, 19 Jul 2021 18:56:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626746183; cv=none; d=google.com; s=arc-20160816; b=C42cFnRDV4eC/6qHR06KkZdbtL5Z5WEQZJ8bG6gFFyxxSYM4WxxjUuMurD3FU84Mns jT1aV+SXbTxLqmLVhNUTBqjLv4qWajeiPGGEF33SJtNXPo7Z03QfItp0U57lTw8EGFCM 0CEkK6dek5Wnc/l4B5VKaBzzFELP2qQotYQeJPZPprPmYbbdYbpRMG0E3x/5J9qk2jj+ Zl1UeAyq8YBqkUZRCiqJ2m/u47aumZ2KfplUhNjfDiv8LiewNmRVpHHBKu9+ip5elGJI M4zFtIKqsENcNqK8N2PX5K43AiY2SbOztye9y4xAc2apof/IMH8Fh7FLxZzIE2Yec5qQ j0gA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=DGCB6UKtCFmwEj+5+kdd4uRbDkRtktgwo6sKoKlsBwM=; b=e3x2UbPRAFMkGeRsBYF5DtNA55aY5BN5NWRfhK8AEZzIgGRs1hmCczlnNCyewQaN8t CESRuKcuJUxuxvbVGRYSLFx80R4Ypsg7MDdIzFUhwuN1lXjgm0XG2jm6+PHvi40G5xrX w5Ka5Tjo3CqY7P+TFYghOmrARS6yMl95fF8k7xq7pHx2rURsEDVF4HrRwlso/jQthxta 7nZn9NDYS9Y/oOFwetABczLVXvRZT0tCNOnsUtjyUInp7RouWMu2IwmlzIoU3eCsz+FC x2CJaUe7IXTho5Q1eXAUJ4/yqoSbdjIBbBg6ZD5v1iwka1yktK9PSqUBE28WKgOOBHYi j9Nw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Q5DVHWyv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w5si12886398ilu.14.2021.07.19.18.56.10; Mon, 19 Jul 2021 18:56:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Q5DVHWyv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347141AbhGSPTH (ORCPT + 99 others); Mon, 19 Jul 2021 11:19:07 -0400 Received: from mail.kernel.org ([198.145.29.99]:60454 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237751AbhGSOoY (ORCPT ); Mon, 19 Jul 2021 10:44:24 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9ABD76121F; Mon, 19 Jul 2021 15:22:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626708153; bh=XUwDBV44ClTF8/YLsdYrF24Rh0dJD/re0h0QpAYYk6Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q5DVHWyvNgFZVhFwZ6DkZgQKRwD9Noh6lYzy9qIUo+xHsPEzl4LOL0Q4GIGvLVMAz NvN6twcpC+IC9dO0pBHYkSPpji1+G5VEMU8PoO5XbsLZs7ss1c7WFJkW+vTj8kAeZP VoZ8bPeMt5AT2IgqGkOvqp2nmHVuJhMkfxHhghOQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ilja Van Sprundel , Marcelo Ricardo Leitner , "David S. Miller" , Sasha Levin Subject: [PATCH 4.14 201/315] sctp: add size validation when walking chunks Date: Mon, 19 Jul 2021 16:51:30 +0200 Message-Id: <20210719144950.038069549@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144942.861561397@linuxfoundation.org> References: <20210719144942.861561397@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Marcelo Ricardo Leitner [ 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 Signed-off-by: Marcelo Ricardo Leitner Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- 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