]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: smbd: Allow smbd_smb2_process_negprot() to return NTSTATUS as it can fail.
authorJeremy Allison <jra@samba.org>
Tue, 26 Nov 2019 20:14:29 +0000 (12:14 -0800)
committerJeremy Allison <jra@samba.org>
Wed, 4 Dec 2019 20:02:40 +0000 (20:02 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14205

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/smbd/globals.h
source3/smbd/smb2_server.c

index c791eb0fa6f14e9e7b94ead44d9bc6ed41c0098d..a5e02ebc96ac5da8ec527877ad8c29d63daedb95 100644 (file)
@@ -234,7 +234,7 @@ NTSTATUS smbd_add_connection(struct smbXsrv_client *client, int sock_fd,
 
 void reply_smb2002(struct smb_request *req, uint16_t choice);
 void reply_smb20ff(struct smb_request *req, uint16_t choice);
-void smbd_smb2_process_negprot(struct smbXsrv_connection *xconn,
+NTSTATUS smbd_smb2_process_negprot(struct smbXsrv_connection *xconn,
                               uint64_t expected_seq_low,
                               const uint8_t *inpdu, size_t size);
 
index 7044ecb991ae206fc2f933a7d9918d89971d8240..9cf8841d82705a14c422634327f3fa8714603174 100644 (file)
@@ -3629,7 +3629,7 @@ static NTSTATUS smbd_smb2_request_next_incoming(struct smbXsrv_connection *xconn
        return NT_STATUS_OK;
 }
 
-void smbd_smb2_process_negprot(struct smbXsrv_connection *xconn,
+NTSTATUS smbd_smb2_process_negprot(struct smbXsrv_connection *xconn,
                               uint64_t expected_seq_low,
                               const uint8_t *inpdu, size_t size)
 {
@@ -3643,25 +3643,25 @@ void smbd_smb2_process_negprot(struct smbXsrv_connection *xconn,
        status = smbd_initialize_smb2(xconn, expected_seq_low);
        if (!NT_STATUS_IS_OK(status)) {
                smbd_server_connection_terminate(xconn, nt_errstr(status));
-               return;
+               return status;
        }
 
        status = smbd_smb2_request_create(xconn, inpdu, size, &req);
        if (!NT_STATUS_IS_OK(status)) {
                smbd_server_connection_terminate(xconn, nt_errstr(status));
-               return;
+               return status;
        }
 
        status = smbd_smb2_request_validate(req);
        if (!NT_STATUS_IS_OK(status)) {
                smbd_server_connection_terminate(xconn, nt_errstr(status));
-               return;
+               return status;
        }
 
        status = smbd_smb2_request_setup_out(req);
        if (!NT_STATUS_IS_OK(status)) {
                smbd_server_connection_terminate(xconn, nt_errstr(status));
-               return;
+               return status;
        }
 
 #ifdef WITH_PROFILE
@@ -3676,16 +3676,17 @@ void smbd_smb2_process_negprot(struct smbXsrv_connection *xconn,
        status = smbd_smb2_request_dispatch(req);
        if (!NT_STATUS_IS_OK(status)) {
                smbd_server_connection_terminate(xconn, nt_errstr(status));
-               return;
+               return status;
        }
 
        status = smbd_smb2_request_next_incoming(xconn);
        if (!NT_STATUS_IS_OK(status)) {
                smbd_server_connection_terminate(xconn, nt_errstr(status));
-               return;
+               return status;
        }
 
        sconn->num_requests++;
+       return NT_STATUS_OK;
 }
 
 static int socket_error_from_errno(int ret,