platform/olpc: Fix uninitialized data in debugfs write
authorDan Carpenter <dan.carpenter@oracle.com>
Wed, 20 Jul 2022 18:23:38 +0000 (21:23 +0300)
committerHans de Goede <hdegoede@redhat.com>
Thu, 28 Jul 2022 18:40:15 +0000 (20:40 +0200)
The call to:

size = simple_write_to_buffer(cmdbuf, sizeof(cmdbuf), ppos, buf, size);

will succeed if at least one byte is written to the "cmdbuf" buffer.
The "*ppos" value controls which byte is written.  Another problem is
that this code does not check for errors so it's possible for the entire
buffer to be uninitialized.

Inintialize the struct to zero to prevent reading uninitialized stack
data.

Debugfs is normally only writable by root so the impact of this bug is
very minimal.

Fixes: 6cca83d498bd ("Platform: OLPC: move debugfs support from x86 EC driver")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/YthIKn+TfZSZMEcM@kili
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/olpc/olpc-ec.c

index 4ff5c3a..9215204 100644 (file)
@@ -264,7 +264,7 @@ static ssize_t ec_dbgfs_cmd_write(struct file *file, const char __user *buf,
        int i, m;
        unsigned char ec_cmd[EC_MAX_CMD_ARGS];
        unsigned int ec_cmd_int[EC_MAX_CMD_ARGS];
-       char cmdbuf[64];
+       char cmdbuf[64] = "";
        int ec_cmd_bytes;
 
        mutex_lock(&ec_dbgfs_lock);