From: Zhang Xiaohui <[email protected]>

tcpm_queue_vdm() calls memcpy() without checking the destination
size may trigger a buffer overflower.

Signed-off-by: Zhang Xiaohui <[email protected]>
---
 drivers/usb/typec/tcpm/tcpm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index 55535c4f6..fcd331f33 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -1045,7 +1045,7 @@ static void tcpm_queue_vdm(struct tcpm_port *port, const 
u32 header,
 
        port->vdo_count = cnt + 1;
        port->vdo_data[0] = header;
-       memcpy(&port->vdo_data[1], data, sizeof(u32) * cnt);
+       memcpy(&port->vdo_data[1], data, min_t(int, sizeof(u32) * cnt, 
VDO_MAX_SIZE - 1));
        /* Set ready, vdm state machine will actually send */
        port->vdm_retries = 0;
        port->vdm_state = VDM_STATE_READY;
-- 
2.17.1

Reply via email to