diff options
author | Andreas Schneider <asn@samba.org> | 2019-04-11 10:19:16 +0200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2019-05-21 00:03:21 +0000 |
commit | 754e15518330038611f38c26ae3ce6e8a97f2006 (patch) | |
tree | ba383d8bbb5dea5ba8ba094408971925bb1706dc /libcli/smb | |
parent | 7368a20043af0a51cb95330a57849927cc9e3e5e (diff) | |
download | samba-754e15518330038611f38c26ae3ce6e8a97f2006.tar.gz |
libcli:smb: Return NTSTATUS for smb_signing_sign_pdu()
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'libcli/smb')
-rw-r--r-- | libcli/smb/smbXcli_base.c | 11 | ||||
-rw-r--r-- | libcli/smb/smb_signing.c | 12 | ||||
-rw-r--r-- | libcli/smb/smb_signing.h | 6 |
3 files changed, 18 insertions, 11 deletions
diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c index bde0db7e33c..65381a1b9ce 100644 --- a/libcli/smb/smbXcli_base.c +++ b/libcli/smb/smbXcli_base.c @@ -1623,6 +1623,7 @@ static NTSTATUS smb1cli_conn_signv(struct smbXcli_conn *conn, bool one_way_seqnum) { TALLOC_CTX *frame = NULL; + NTSTATUS status; uint8_t *buf; /* @@ -1655,9 +1656,13 @@ static NTSTATUS smb1cli_conn_signv(struct smbXcli_conn *conn, *seqnum = smb_signing_next_seqnum(conn->smb1.signing, one_way_seqnum); - smb_signing_sign_pdu(conn->smb1.signing, - buf, talloc_get_size(buf), - *seqnum); + status = smb_signing_sign_pdu(conn->smb1.signing, + buf, + talloc_get_size(buf), + *seqnum); + if (!NT_STATUS_IS_OK(status)) { + return status; + } memcpy(iov[1].iov_base, buf, iov[1].iov_len); TALLOC_FREE(frame); diff --git a/libcli/smb/smb_signing.c b/libcli/smb/smb_signing.c index 34e6dc0fe58..93e2c82ee7f 100644 --- a/libcli/smb/smb_signing.c +++ b/libcli/smb/smb_signing.c @@ -237,9 +237,9 @@ void smb_signing_cancel_reply(struct smb_signing_state *si, bool oneway) } } -void smb_signing_sign_pdu(struct smb_signing_state *si, - uint8_t *outhdr, size_t len, - uint32_t seqnum) +NTSTATUS smb_signing_sign_pdu(struct smb_signing_state *si, + uint8_t *outhdr, size_t len, + uint32_t seqnum) { uint8_t calc_md5_mac[16]; uint8_t com; @@ -247,7 +247,7 @@ void smb_signing_sign_pdu(struct smb_signing_state *si, if (si->mac_key.length == 0) { if (!si->negotiated) { - return; + return NT_STATUS_OK; } } @@ -294,7 +294,7 @@ void smb_signing_sign_pdu(struct smb_signing_state *si, seqnum, calc_md5_mac); if (!NT_STATUS_IS_OK(status)) { - return; + return status; } } @@ -305,6 +305,8 @@ void smb_signing_sign_pdu(struct smb_signing_state *si, /* outhdr[HDR_SS_FIELD+2]=0; Uncomment this to test if the remote server actually verifies signatures...*/ + + return NT_STATUS_OK; } bool smb_signing_check_pdu(struct smb_signing_state *si, diff --git a/libcli/smb/smb_signing.h b/libcli/smb/smb_signing.h index 7d9e8ad4cac..094b860a44e 100644 --- a/libcli/smb/smb_signing.h +++ b/libcli/smb/smb_signing.h @@ -36,9 +36,9 @@ struct smb_signing_state *smb_signing_init_ex(TALLOC_CTX *mem_ctx, void (*free_fn)(TALLOC_CTX *, void *)); uint32_t smb_signing_next_seqnum(struct smb_signing_state *si, bool oneway); void smb_signing_cancel_reply(struct smb_signing_state *si, bool oneway); -void smb_signing_sign_pdu(struct smb_signing_state *si, - uint8_t *outhdr, size_t len, - uint32_t seqnum); +NTSTATUS smb_signing_sign_pdu(struct smb_signing_state *si, + uint8_t *outhdr, size_t len, + uint32_t seqnum); bool smb_signing_check_pdu(struct smb_signing_state *si, const uint8_t *inhdr, size_t len, uint32_t seqnum); |