]> Git Repo - linux.git/commitdiff
ksmbd: fix integer overflows on 32 bit systems
authorDan Carpenter <[email protected]>
Wed, 15 Jan 2025 00:28:35 +0000 (09:28 +0900)
committerSteve French <[email protected]>
Thu, 16 Jan 2025 05:24:51 +0000 (23:24 -0600)
On 32bit systems the addition operations in ipc_msg_alloc() can
potentially overflow leading to memory corruption.
Add bounds checking using KSMBD_IPC_MAX_PAYLOAD to avoid overflow.

Fixes: 0626e6641f6b ("cifsd: add server handler for central processing and tranport layers")
Cc: [email protected]
Signed-off-by: Dan Carpenter <[email protected]>
Signed-off-by: Namjae Jeon <[email protected]>
Signed-off-by: Steve French <[email protected]>
fs/smb/server/transport_ipc.c

index c0bb8c7722d72342d7bd9e68bed6251539c9c64e..0460ebea6ff02859e80288c6b9a6a5b24bf445fc 100644 (file)
@@ -627,6 +627,9 @@ ksmbd_ipc_spnego_authen_request(const char *spnego_blob, int blob_len)
        struct ksmbd_spnego_authen_request *req;
        struct ksmbd_spnego_authen_response *resp;
 
+       if (blob_len > KSMBD_IPC_MAX_PAYLOAD)
+               return NULL;
+
        msg = ipc_msg_alloc(sizeof(struct ksmbd_spnego_authen_request) +
                        blob_len + 1);
        if (!msg)
@@ -806,6 +809,9 @@ struct ksmbd_rpc_command *ksmbd_rpc_write(struct ksmbd_session *sess, int handle
        struct ksmbd_rpc_command *req;
        struct ksmbd_rpc_command *resp;
 
+       if (payload_sz > KSMBD_IPC_MAX_PAYLOAD)
+               return NULL;
+
        msg = ipc_msg_alloc(sizeof(struct ksmbd_rpc_command) + payload_sz + 1);
        if (!msg)
                return NULL;
@@ -854,6 +860,9 @@ struct ksmbd_rpc_command *ksmbd_rpc_ioctl(struct ksmbd_session *sess, int handle
        struct ksmbd_rpc_command *req;
        struct ksmbd_rpc_command *resp;
 
+       if (payload_sz > KSMBD_IPC_MAX_PAYLOAD)
+               return NULL;
+
        msg = ipc_msg_alloc(sizeof(struct ksmbd_rpc_command) + payload_sz + 1);
        if (!msg)
                return NULL;
This page took 0.05227 seconds and 4 git commands to generate.