]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
smb: client: Reset all search buffer pointers when releasing buffer
authorWang Zhaolong <wangzhaolong1@huawei.com>
Fri, 16 May 2025 09:12:56 +0000 (17:12 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Jun 2025 12:37:08 +0000 (14:37 +0200)
commit e48f9d849bfdec276eebf782a84fd4dfbe1c14c0 upstream.

Multiple pointers in struct cifs_search_info (ntwrk_buf_start,
srch_entries_start, and last_entry) point to the same allocated buffer.
However, when freeing this buffer, only ntwrk_buf_start was set to NULL,
while the other pointers remained pointing to freed memory.

This is defensive programming to prevent potential issues with stale
pointers. While the active UAF vulnerability is fixed by the previous
patch, this change ensures consistent pointer state and more robust error
handling.

Signed-off-by: Wang Zhaolong <wangzhaolong1@huawei.com>
Cc: stable@vger.kernel.org
Reviewed-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Wang Zhaolong <wangzhaolong1@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/cifs/readdir.c

index a7a9391214c167ebcab1a1c5a68d63d453bb8037..9e62d75f24651e4a4265908413469da0a0ced33f 100644 (file)
@@ -755,7 +755,10 @@ find_cifs_entry(const unsigned int xid, struct cifs_tcon *tcon, loff_t pos,
                        else
                                cifs_buf_release(cfile->srch_inf.
                                                ntwrk_buf_start);
+                       /* Reset all pointers to the network buffer to prevent stale references */
                        cfile->srch_inf.ntwrk_buf_start = NULL;
+                       cfile->srch_inf.srch_entries_start = NULL;
+                       cfile->srch_inf.last_entry = NULL;
                }
                rc = initiate_cifs_search(xid, file, full_path);
                if (rc) {