From: Andreas Schneider Date: Thu, 11 Apr 2019 08:22:26 +0000 (+0200) Subject: s3:smbd: Return NTSTATUS for srv_calculate_sign_mac() X-Git-Tag: ldb-2.0.5~722 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2772c92efa2a7bc906e2fcdc24dfc56dbd81be07;p=thirdparty%2Fsamba.git s3:smbd: Return NTSTATUS for srv_calculate_sign_mac() Signed-off-by: Andreas Schneider Reviewed-by: Andrew Bartlett --- diff --git a/source3/smbd/process.c b/source3/smbd/process.c index d6545101f01..2842c98458c 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -228,8 +228,15 @@ bool srv_send_smb(struct smbXsrv_connection *xconn, char *buffer, smbd_lock_socket(xconn); if (do_signing) { + NTSTATUS status; + /* Sign the outgoing packet if required. */ - srv_calculate_sign_mac(xconn, buf_out, seqnum); + status = srv_calculate_sign_mac(xconn, buf_out, seqnum); + if (!NT_STATUS_IS_OK(status)) { + DBG_ERR("Failed to calculate signing mac: %s\n", + nt_errstr(status)); + return false; + } } if (do_encrypt) { diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index 05208166ebf..7d4f7757ec3 100644 --- a/source3/smbd/proto.h +++ b/source3/smbd/proto.h @@ -52,8 +52,8 @@ struct smbXsrv_connection; bool srv_check_sign_mac(struct smbXsrv_connection *conn, const char *inbuf, uint32_t *seqnum, bool trusted_channel); -void srv_calculate_sign_mac(struct smbXsrv_connection *conn, - char *outbuf, uint32_t seqnum); +NTSTATUS srv_calculate_sign_mac(struct smbXsrv_connection *conn, + char *outbuf, uint32_t seqnum); void srv_cancel_sign_response(struct smbXsrv_connection *conn); bool srv_init_signing(struct smbXsrv_connection *conn); void srv_set_signing_negotiated(struct smbXsrv_connection *conn, diff --git a/source3/smbd/signing.c b/source3/smbd/signing.c index 9fac87b5081..eb1bf389b0f 100644 --- a/source3/smbd/signing.c +++ b/source3/smbd/signing.c @@ -75,21 +75,24 @@ bool srv_check_sign_mac(struct smbXsrv_connection *conn, Called to sign an outgoing packet to the client. ************************************************************/ -void srv_calculate_sign_mac(struct smbXsrv_connection *conn, - char *outbuf, uint32_t seqnum) +NTSTATUS srv_calculate_sign_mac(struct smbXsrv_connection *conn, + char *outbuf, uint32_t seqnum) { uint8_t *outhdr; size_t len; /* Check if it's a non-session message. */ if(CVAL(outbuf,0)) { - return; + return NT_STATUS_OK;; } len = smb_len(outbuf); outhdr = (uint8_t *)outbuf + NBT_HDR_SIZE; - smb_signing_sign_pdu(conn->smb1.signing_state, outhdr, len, seqnum); + return smb_signing_sign_pdu(conn->smb1.signing_state, + outhdr, + len, + seqnum); }