summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Pham <jackp@codeaurora.org>2017-02-10 15:33:29 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-02-13 10:38:34 -0800
commitc39b242b643da24676fd02ea83f6b6aba0a4d69a (patch)
treefc061bb40d3d33ea741c8a32c0f51140032fde7c
parent3a7e752617514960c5cecdf84e12b13dc63c04c7 (diff)
usb: pd: Avoid buffer overrun during msg_rx
When copying the buffer to the rx_msg structure, ensure that we do not copy more than the payload buffer size. Guard the unknown len parameter within a min() check. Change-Id: I55feff0dbee59b680a42878a38da8e9742332008 Signed-off-by: Jack Pham <jackp@codeaurora.org>
-rw-r--r--drivers/usb/pd/policy_engine.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/pd/policy_engine.c b/drivers/usb/pd/policy_engine.c
index 611750e209f9..191a3f4b515a 100644
--- a/drivers/usb/pd/policy_engine.c
+++ b/drivers/usb/pd/policy_engine.c
@@ -660,7 +660,7 @@ static void phy_msg_received(struct usbpd *pd, enum pd_msg_type type,
rx_msg->type = PD_MSG_HDR_TYPE(header);
rx_msg->len = PD_MSG_HDR_COUNT(header);
- memcpy(&rx_msg->payload, buf, len);
+ memcpy(&rx_msg->payload, buf, min(len, sizeof(rx_msg->payload)));
spin_lock_irqsave(&pd->rx_lock, flags);
list_add_tail(&rx_msg->entry, &pd->rx_q);