]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
usb: gadget: configfs: Fix OOB read on empty string write
authorXinyu Liu <1171169449@qq.com>
Wed, 9 Jul 2025 03:55:33 +0000 (11:55 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:22:26 +0000 (16:22 +0200)
commit 3014168731b7930300aab656085af784edc861f6 upstream.

When writing an empty string to either 'qw_sign' or 'landingPage'
sysfs attributes, the store functions attempt to access page[l - 1]
before validating that the length 'l' is greater than zero.

This patch fixes the vulnerability by adding a check at the beginning
of os_desc_qw_sign_store() and webusb_landingPage_store() to handle
the zero-length input case gracefully by returning immediately.

Signed-off-by: Xinyu Liu <katieeliu@tencent.com>
Cc: stable <stable@kernel.org>
Link: https://lore.kernel.org/r/tencent_B1C9481688D0E95E7362AB2E999DE8048207@qq.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/configfs.c

index 6bb69a4e64704f106112edfc6f4a969ef7eb092f..d810b96a7ba43e25b483a139e71919e027e57e0b 100644 (file)
@@ -855,6 +855,8 @@ static ssize_t os_desc_qw_sign_store(struct config_item *item, const char *page,
        struct gadget_info *gi = os_desc_item_to_gadget_info(item);
        int res, l;
 
+       if (!len)
+               return len;
        l = min((int)len, OS_STRING_QW_SIGN_LEN >> 1);
        if (page[l - 1] == '\n')
                --l;