OSDN Git Service

media: sti: don't copy past the size
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 21 Jun 2021 07:32:25 +0000 (09:32 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 12 Jul 2021 07:16:31 +0000 (09:16 +0200)
The logic at delta_ipc_open() tries to copy past the size of
the name passed to it:

drivers/media/platform/sti/delta/delta-ipc.c:178 delta_ipc_open() error: __memcpy() 'name' too small (17 vs 32)

Basically,this function is called just one with:

ret = delta_ipc_open(pctx, "JPEG_DECODER_HW0", ...);

The string used there has just 17 bytes. Yet, the logic tries
to copy the entire name size (32 bytes), which is plain wrong.

Replace it by strscpy, which is good enough to copy the string,
warranting that this will be NUL-terminated.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/sti/delta/delta-ipc.c

index 186d88f..21d3e08 100644 (file)
@@ -175,8 +175,7 @@ int delta_ipc_open(struct delta_ctx *pctx, const char *name,
        msg.ipc_buf_size = ipc_buf_size;
        msg.ipc_buf_paddr = ctx->ipc_buf->paddr;
 
-       memcpy(msg.name, name, sizeof(msg.name));
-       msg.name[sizeof(msg.name) - 1] = 0;
+       strscpy(msg.name, name, sizeof(msg.name));
 
        msg.param_size = param->size;
        memcpy(ctx->ipc_buf->vaddr, param->data, msg.param_size);