HID: google: Use struct_size() helper in kzalloc()
authorGustavo A. R. Silva <gustavoars@kernel.org>
Tue, 25 Jan 2022 23:37:44 +0000 (17:37 -0600)
committerJiri Kosina <jkosina@suse.cz>
Wed, 2 Feb 2022 14:09:39 +0000 (15:09 +0100)
Make use of the struct_size() helper instead of an open-coded version,
in order to avoid any potential type mistakes or integer overflows that,
in the worst scenario, could lead to heap overflows.

Also, address the following sparse warnings:
drivers/hid/hid-google-hammer.c:61:23: warning: using sizeof on a flexible structure

Link: https://github.com/KSPP/linux/issues/174
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-google-hammer.c

index 0403beb3104b9e47af2c7cb79acf734879e05b24..ddbe0de177e26961c4b3599e60b4ed0dd0b0ae6b 100644 (file)
@@ -58,7 +58,7 @@ static int cbas_ec_query_base(struct cros_ec_device *ec_dev, bool get_state,
        struct cros_ec_command *msg;
        int ret;
 
-       msg = kzalloc(sizeof(*msg) + max(sizeof(u32), sizeof(*params)),
+       msg = kzalloc(struct_size(msg, data, max(sizeof(u32), sizeof(*params))),
                      GFP_KERNEL);
        if (!msg)
                return -ENOMEM;