diff options
Diffstat (limited to 'source3/libsmb/smb2cli_session.c')
-rw-r--r-- | source3/libsmb/smb2cli_session.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/source3/libsmb/smb2cli_session.c b/source3/libsmb/smb2cli_session.c index 4ffdf13dd6..2a00593ed0 100644 --- a/source3/libsmb/smb2cli_session.c +++ b/source3/libsmb/smb2cli_session.c @@ -98,8 +98,19 @@ static void smb2cli_sesssetup_blob_done(struct tevent_req *subreq) NTSTATUS status; struct iovec *iov; uint16_t offset, length; - - status = smb2cli_req_recv(subreq, talloc_tos(), &iov, 9); + static const struct smb2cli_req_expected_response expected[] = { + { + .status = NT_STATUS_MORE_PROCESSING_REQUIRED, + .body_size = 0x09 + }, + { + .status = NT_STATUS_OK, + .body_size = 0x09 + } + }; + + status = smb2cli_req_recv(subreq, talloc_tos(), &iov, + expected, ARRAY_SIZE(expected)); if (!NT_STATUS_IS_OK(status) && !NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { TALLOC_FREE(subreq); @@ -363,8 +374,15 @@ static void smb2cli_logoff_done(struct tevent_req *subreq) struct tevent_req); NTSTATUS status; struct iovec *iov; + static const struct smb2cli_req_expected_response expected[] = { + { + .status = NT_STATUS_OK, + .body_size = 0x04 + } + }; - status = smb2cli_req_recv(subreq, talloc_tos(), &iov, 4); + status = smb2cli_req_recv(subreq, talloc_tos(), &iov, + expected, ARRAY_SIZE(expected)); TALLOC_FREE(subreq); if (tevent_req_nterror(req, status)) { return; |