Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3771005pxv; Mon, 19 Jul 2021 08:21:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxir23UxeRNw83lqxR6HAOcTUf6kej9R+/adwMhSFMZPB4NxKE4IN/aZFqN5xQLigSMd9pL X-Received: by 2002:a17:906:b204:: with SMTP id p4mr28158690ejz.239.1626708115673; Mon, 19 Jul 2021 08:21:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626708115; cv=none; d=google.com; s=arc-20160816; b=LD6ogNV5b/pWdLk3ZIVs0quxBv7FD2x/txqCC092T/x89of5iHi14KhPQcXWXgt2A+ 3zqvXTdFo2ZTE5J5E2k7wZi+W5IegouY7PFSf/Brg0YS3AZ77MNJaEIWYh29yvApW+yG qtZn5Pt28wEVBq3RK+a5knlSr+4xs34BH7ELwXhIfrElzA+6ZGpZifaiJDaAmyp7Cm9y l0CKuDP0DB8YqyFxuGeQN0CZnWJ/4bCOVjKz4Pw5Bv8PPUPyFD5FiP6r35+/sQ3WlyY9 tqg4/+b6B9pxobYAiy8ZEmpvzQjdBA8geCTdJsweWsxK8gaZIbeuFhMpkVP4SMEJIOGr re1g== 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=V1ZD57CzFOTAGUoxi+Tm+yM1447dlIGw2aJd2jllwgo=; b=rcrzbfHXCCbK2X5HECU78AlE6omBCMrC+OY3J6tDRT5Nzizl4ff0ScA6+k0cGjFxt/ 1quhDfemqq8lUzmzHtA+iZRHVI9YyhSJhVGW/FwWm7K5ZhaAisJNWOSfwParJgXK2s0t cnP69F4lx7mpkYvcTt431gFISfWR23r+vsf/ltOnKaNnjVAzMfMgFItQQAYOoqZUIKfP +aUxmr1bVSBwQOt3CA0/xto9/t3Ce7WfuUf6kXGhwAdkllPqxfhPCAWcxgIyKwpT5zJ/ x9yQlozOdw7YRSPMvloq6AKR9wUMOHdG7bTJpgAprENQIjvWJ8JVyVZVP4AGFwtH0LCv Jeow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=BGZYjLOd; 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 c4si21689021eds.528.2021.07.19.08.21.32; Mon, 19 Jul 2021 08:21:55 -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=BGZYjLOd; 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 S245673AbhGSOjX (ORCPT + 99 others); Mon, 19 Jul 2021 10:39:23 -0400 Received: from mail.kernel.org ([198.145.29.99]:40236 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244634AbhGSO3y (ORCPT ); Mon, 19 Jul 2021 10:29:54 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3E5986113C; Mon, 19 Jul 2021 15:10:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626707418; bh=FQQIFpnAiR23hT4T3lXEcnFdqObycTksY+X948lJ45A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BGZYjLOdY7O9XXnX5I8FSIu8nvLtmdFDg+is4pZ0XinJiNCudhH5Y/dVLTFGTHxqG HNfN0S2pc6XAlbJeuiP639I26RngngjWt/dmV3Pxoj5z7/MFYvV6lqGugzV+9EdOSc TKjZMIX2YZp51QqfboELrJv0ZhTxtfBnlXrDYTFA= 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.9 156/245] sctp: add size validation when walking chunks Date: Mon, 19 Jul 2021 16:51:38 +0200 Message-Id: <20210719144945.448079004@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144940.288257948@linuxfoundation.org> References: <20210719144940.288257948@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 12d821ea8a1f..8f4574c4aa6c 100644 --- a/net/sctp/input.c +++ b/net/sctp/input.c @@ -1165,7 +1165,7 @@ static struct sctp_association *__sctp_rcv_walk_lookup(struct net *net, ch = (sctp_chunkhdr_t *) 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