[SCM] Samba Shared Repository - branch master updated
Stefan Metzmacher
metze at samba.org
Mon Nov 7 03:39:04 MST 2011
The branch, master has been updated
via 230cd1e s3:libsmb: return NT_STATUS_OK for if a request is not the last one in the chain
via 597f2ae s3:libsmb: make sure have_andx_command() returns false for non AndX commands
via b20775f s3:libsmb: remember the seqnum on all chained requests
via 20fe765 s3:libsmb: get cmd of the chained request before changing wct_ofs
from 384eaba s4: samba-tool user --help documenation improvements Signed-off-by: Theresa Halloran <thallora at linux.vnet.ibm.com>
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 230cd1e276f9661f290b3eaeecca005303a68efb
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Nov 7 08:55:20 2011 +0100
s3:libsmb: return NT_STATUS_OK for if a request is not the last one in the chain
metze
Autobuild-User: Stefan Metzmacher <metze at samba.org>
Autobuild-Date: Mon Nov 7 11:38:05 CET 2011 on sn-devel-104
commit 597f2ae3423ce70f84e41ed3293f049920fa0758
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Nov 7 08:54:40 2011 +0100
s3:libsmb: make sure have_andx_command() returns false for non AndX commands
metze
commit b20775fb3b3c86c4aab913e5cbae19cf4e0e71d3
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Nov 7 08:44:39 2011 +0100
s3:libsmb: remember the seqnum on all chained requests
This is needed in order to verify the incoming signature
correctly.
metze
commit 20fe7658a779c24c9a4e0b66da844fd117a97319
Author: Stefan Metzmacher <metze at samba.org>
Date: Sat Nov 5 12:29:23 2011 +0100
s3:libsmb: get cmd of the chained request before changing wct_ofs
metze
-----------------------------------------------------------------------
Summary of changes:
source3/libsmb/async_smb.c | 25 ++++++++++++++++++++-----
1 files changed, 20 insertions(+), 5 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/libsmb/async_smb.c b/source3/libsmb/async_smb.c
index 79194f5..08b6c35 100644
--- a/source3/libsmb/async_smb.c
+++ b/source3/libsmb/async_smb.c
@@ -51,11 +51,15 @@ static NTSTATUS cli_pull_raw_error(const uint8_t *buf)
* @retval Is there a command following?
*/
-static bool have_andx_command(const char *buf, uint16_t ofs)
+static bool have_andx_command(const char *buf, uint16_t ofs, uint8_t cmd)
{
uint8_t wct;
size_t buflen = talloc_get_size(buf);
+ if (!is_andx_req(cmd)) {
+ return false;
+ }
+
if ((ofs == buflen-1) || (ofs == buflen)) {
return false;
}
@@ -870,7 +874,7 @@ NTSTATUS cli_smb_recv(struct tevent_req *req,
}
}
- if (!have_andx_command((char *)state->inbuf, wct_ofs)) {
+ if (!have_andx_command((char *)state->inbuf, wct_ofs, cmd)) {
/*
* This request was not completed because a previous
* request in the chain had received an error.
@@ -878,6 +882,7 @@ NTSTATUS cli_smb_recv(struct tevent_req *req,
return NT_STATUS_REQUEST_ABORTED;
}
+ cmd = CVAL(state->inbuf, wct_ofs + 1);
wct_ofs = SVAL(state->inbuf, wct_ofs + 3);
/*
@@ -889,8 +894,6 @@ NTSTATUS cli_smb_recv(struct tevent_req *req,
if (wct_ofs+2 > talloc_get_size(state->inbuf)) {
return NT_STATUS_INVALID_NETWORK_RESPONSE;
}
-
- cmd = CVAL(state->inbuf, wct_ofs + 1);
}
state->cli->raw_status = cli_pull_raw_error(state->inbuf);
@@ -908,7 +911,7 @@ NTSTATUS cli_smb_recv(struct tevent_req *req,
status = state->cli->raw_status;
}
- if (!have_andx_command((char *)state->inbuf, wct_ofs)) {
+ if (!have_andx_command((char *)state->inbuf, wct_ofs, cmd)) {
if ((cmd == SMBsesssetupX)
&& NT_STATUS_EQUAL(
@@ -928,6 +931,12 @@ NTSTATUS cli_smb_recv(struct tevent_req *req,
*/
return status;
}
+ } else {
+ /*
+ * Only the last request in the chain get the returned
+ * status.
+ */
+ status = NT_STATUS_OK;
}
no_err:
@@ -1092,6 +1101,12 @@ NTSTATUS cli_smb_chain_send(struct tevent_req **reqs, int num_reqs)
return status;
}
+ for (i=0; i < (num_reqs - 1); i++) {
+ state = tevent_req_data(reqs[i], struct cli_smb_state);
+
+ state->seqnum = last_state->seqnum;
+ }
+
return NT_STATUS_OK;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list