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: stable@vger.kernel.org
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
        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)
        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;
        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;