Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5052ea7c authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman Committed by PavanKumar S.R
Browse files

UPSTREAM: usb: gadget: rndis: check size of RNDIS_MSG_SET command



Check the size of the RNDIS_MSG_SET command given to us before
attempting to respond to an invalid message size.

Bug: 162326603
Reported-by: default avatarSzymon Heidrich <szymon.heidrich@gmail.com>
Cc: stable@kernel.org
Tested-by: default avatarSzymon Heidrich <szymon.heidrich@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 38ea1eac7d88072bbffb630e2b3db83ca649b826)
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
Change-Id: I61168b48de4ca79a3a28dd4d3b81779bc25554c1
(cherry picked from commit 16d19b656133457225cf69a4825faf30a0ca59a4)
Git-commit: 528615555b59cbd659186d44b3c6db69c30414eb
Git-repo: https://android.googlesource.com/kernel/common


Signed-off-by: default avatarPavanKumar S.R <quic_pavasr@quicinc.com>
parent 447fa26c
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -633,14 +633,17 @@ static int rndis_set_response(struct rndis_params *params,
	rndis_set_cmplt_type *resp;
	rndis_resp_t *r;

	BufLength = le32_to_cpu(buf->InformationBufferLength);
	BufOffset = le32_to_cpu(buf->InformationBufferOffset);
	if ((BufLength > RNDIS_MAX_TOTAL_SIZE) ||
	    (BufOffset + 8 >= RNDIS_MAX_TOTAL_SIZE))
		    return -EINVAL;

	r = rndis_add_response(params, sizeof(rndis_set_cmplt_type));
	if (!r)
		return -ENOMEM;
	resp = (rndis_set_cmplt_type *)r->buf;

	BufLength = le32_to_cpu(buf->InformationBufferLength);
	BufOffset = le32_to_cpu(buf->InformationBufferOffset);

#ifdef	VERBOSE_DEBUG
	pr_debug("%s: Length: %d\n", __func__, BufLength);
	pr_debug("%s: Offset: %d\n", __func__, BufOffset);