mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-28 07:04:00 +08:00
usb: gadget: rndis: prevent integer overflow in rndis_set_response()
If "BufOffset" is very large the "BufOffset + 8" operation can have an
integer overflow.
Cc: stable@kernel.org
Fixes: 38ea1eac7d
("usb: gadget: rndis: check size of RNDIS_MSG_SET command")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/20220301080424.GA17208@kili
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7e57714cd0
commit
65f3324f4b
@ -640,6 +640,7 @@ static int rndis_set_response(struct rndis_params *params,
|
|||||||
BufLength = le32_to_cpu(buf->InformationBufferLength);
|
BufLength = le32_to_cpu(buf->InformationBufferLength);
|
||||||
BufOffset = le32_to_cpu(buf->InformationBufferOffset);
|
BufOffset = le32_to_cpu(buf->InformationBufferOffset);
|
||||||
if ((BufLength > RNDIS_MAX_TOTAL_SIZE) ||
|
if ((BufLength > RNDIS_MAX_TOTAL_SIZE) ||
|
||||||
|
(BufOffset > RNDIS_MAX_TOTAL_SIZE) ||
|
||||||
(BufOffset + 8 >= RNDIS_MAX_TOTAL_SIZE))
|
(BufOffset + 8 >= RNDIS_MAX_TOTAL_SIZE))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user