]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
fs/smb/client: fix out-of-bounds read in cifs_sanitize_prepath
authorFredric Cover <FredTheDude@proton.me>
Mon, 30 Mar 2026 20:11:27 +0000 (13:11 -0700)
committerSteve French <stfrench@microsoft.com>
Tue, 31 Mar 2026 23:21:14 +0000 (18:21 -0500)
When cifs_sanitize_prepath is called with an empty string or a string
containing only delimiters (e.g., "/"), the current logic attempts to
check *(cursor2 - 1) before cursor2 has advanced. This results in an
out-of-bounds read.

This patch adds an early exit check after stripping prepended
delimiters. If no path content remains, the function returns NULL.

The bug was identified via manual audit and verified using a
standalone test case compiled with AddressSanitizer, which
triggered a SEGV on affected inputs.

Signed-off-by: Fredric Cover <FredTheDude@proton.me>
Reviewed-by: Henrique Carvalho <[2]henrique.carvalho@suse.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/fs_context.c

index a4a7c7eee038c1e965bde1b614a5bc9424340e55..a46764c247107d182dce92b4690e5fbef0c57e21 100644 (file)
@@ -588,6 +588,10 @@ char *cifs_sanitize_prepath(char *prepath, gfp_t gfp)
        while (IS_DELIM(*cursor1))
                cursor1++;
 
+       /* exit in case of only delimiters */
+       if (!*cursor1)
+               return NULL;
+
        /* copy the first letter */
        *cursor2 = *cursor1;