firmware: arm_ffa: Fix memory corruption in ffa_msg_send2()
authorDan Carpenter <dan.carpenter@linaro.org>
Wed, 24 Apr 2024 11:40:43 +0000 (14:40 +0300)
committerSudeep Holla <sudeep.holla@arm.com>
Wed, 24 Apr 2024 13:19:45 +0000 (14:19 +0100)
The "msg" pointer is a struct and msg->offset is the sizeof(*msg).  The
pointer here math means the memcpy() will write outside the bounds.
Cast "msg" to a u8 pointer to fix this.

Fixes: 02c19d84c7c5 ("firmware: arm_ffa: Add support for FFA_MSG_SEND2")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/cd5fb6b5-81fa-4a6d-b2b8-284ca704bbff@moroto.mountain
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_ffa/driver.c

index 26968edac5b22bc59ebe727a888e41e062a5fdb0..b29496cac2afb56cb474958e6f739b81d109868b 100644 (file)
@@ -363,7 +363,7 @@ static int ffa_msg_send2(u16 src_id, u16 dst_id, void *buf, size_t sz)
        msg->offset = sizeof(*msg);
        msg->send_recv_id = src_dst_ids;
        msg->size = sz;
-       memcpy(msg + msg->offset, buf, sz);
+       memcpy((u8 *)msg + msg->offset, buf, sz);
 
        /* flags = 0, sender VMID = 0 works for both physical/virtual NS */
        invoke_ffa_fn((ffa_value_t){