]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ksmbd: fix a missing return value check bug
authorWentao Liang <liangwentao@iscas.ac.cn>
Mon, 23 Dec 2024 15:30:50 +0000 (23:30 +0800)
committerSteve French <stfrench@microsoft.com>
Mon, 6 Jan 2025 02:43:37 +0000 (20:43 -0600)
In the smb2_send_interim_resp(), if ksmbd_alloc_work_struct()
fails to allocate a node, it returns a NULL pointer to the
in_work pointer. This can lead to an illegal memory write of
in_work->response_buf when allocate_interim_rsp_buf() attempts
to perform a kzalloc() on it.

To address this issue, incorporating a check for the return
value of ksmbd_alloc_work_struct() ensures that the function
returns immediately upon allocation failure, thereby preventing
the aforementioned illegal memory access.

Fixes: 041bba4414cd ("ksmbd: fix wrong interim response on compound")
Signed-off-by: Wentao Liang <liangwentao@iscas.ac.cn>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/server/smb2pdu.c

index 23e21845f9286c7a6843a72c7f96e419b7a0b718..433e33c04039b39da62ef6f9e3d26a185860dae3 100644 (file)
@@ -695,6 +695,9 @@ void smb2_send_interim_resp(struct ksmbd_work *work, __le32 status)
        struct smb2_hdr *rsp_hdr;
        struct ksmbd_work *in_work = ksmbd_alloc_work_struct();
 
+       if (!in_work)
+               return;
+
        if (allocate_interim_rsp_buf(in_work)) {
                pr_err("smb_allocate_rsp_buf failed!\n");
                ksmbd_free_work_struct(in_work);