platform/surface: aggregator_cdev: Fix access of uninitialized variables
authorMaximilian Luz <luzmaximilian@gmail.com>
Mon, 11 Jan 2021 15:48:50 +0000 (16:48 +0100)
committerHans de Goede <hdegoede@redhat.com>
Wed, 13 Jan 2021 09:30:21 +0000 (10:30 +0100)
When copy_struct_from_user() in ssam_cdev_request() fails, we directly
jump to the 'out' label. In this case, however 'spec' and 'rsp' are not
initialized, but we still access fields of those variables. Fix this by
initializing them at the time of their declaration.

Reported-by: Colin Ian King <colin.king@canonical.com>
Fixes: 178f6ab77e61 ("platform/surface: Add Surface Aggregator user-space interface")
Addresses-Coverity: ("Uninitialized pointer read")
Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
Link: https://lore.kernel.org/r/20210111154851.325404-2-luzmaximilian@gmail.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/surface/surface_aggregator_cdev.c

index 340d15b..979340c 100644 (file)
@@ -66,8 +66,8 @@ static long ssam_cdev_request(struct ssam_cdev *cdev, unsigned long arg)
 {
        struct ssam_cdev_request __user *r;
        struct ssam_cdev_request rqst;
-       struct ssam_request spec;
-       struct ssam_response rsp;
+       struct ssam_request spec = {};
+       struct ssam_response rsp = {};
        const void __user *plddata;
        void __user *rspdata;
        int status = 0, ret = 0, tmp;