[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Mon Jul 23 16:09:03 MDT 2012


The branch, master has been updated
       via  43b070d libcli/smb: pass down smbXcli_session to smb1cli_req_create/send() and smb1cli_trans*
       via  af90c71 s4:libcli/raw: setup a smbXcli_session for each smbcli_session
       via  cdec0c4 s3:libsmb: use cli_state_{g,s}et_uid instead of smb1.uid directly
       via  6bff589 libcli/smb: introduce smb1.session for uid use
      from  a256d61 s3-winbind: Fix bug #9052 resolving our own "Domain Local" groups.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 43b070d8dd20d7a2a1a0ec1eb5ebc679cd699bf3
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 23 20:15:21 2012 +0200

    libcli/smb: pass down smbXcli_session to smb1cli_req_create/send() and smb1cli_trans*
    
    metze
    
    Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
    Autobuild-Date(master): Tue Jul 24 00:08:58 CEST 2012 on sn-devel-104

commit af90c71ed8e66586aa23f7d0e18efc557c9a0c08
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jul 23 19:47:05 2012 +0200

    s4:libcli/raw: setup a smbXcli_session for each smbcli_session
    
    metze

commit cdec0c46464c8b524fc64ff46f1af809af026086
Author: Luk Claes <luk at debian.org>
Date:   Sat Jun 2 12:45:40 2012 +0200

    s3:libsmb: use cli_state_{g,s}et_uid instead of smb1.uid directly
    
    Signed-off-by: Luk Claes <luk at debian.org>
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 6bff589e33afde6e0f7db9f99f14be5cb171f587
Author: Luk Claes <luk at debian.org>
Date:   Sat Jun 2 12:49:22 2012 +0200

    libcli/smb: introduce smb1.session for uid use
    
    Signed-off-by: Luk Claes <luk at debian.org>
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 libcli/smb/smb1cli_trans.c        |   21 +++++++++++++--------
 libcli/smb/smbXcli_base.c         |   34 +++++++++++++++++++++++++++-------
 libcli/smb/smbXcli_base.h         |   13 +++++++++----
 source3/include/client.h          |    2 +-
 source3/libsmb/async_smb.c        |    4 ++--
 source3/libsmb/clientgen.c        |   11 +++++++----
 source3/libsmb/clitrans.c         |    6 ++++--
 source4/libcli/raw/clisession.c   |   14 +++++++++++++-
 source4/libcli/raw/clitransport.c |   13 ++++++++-----
 source4/libcli/raw/libcliraw.h    |    1 +
 source4/libcli/raw/rawrequest.c   |    2 ++
 source4/libcli/raw/rawtrans.c     |   20 ++++++++++++++------
 12 files changed, 101 insertions(+), 40 deletions(-)


Changeset truncated at 500 lines:

diff --git a/libcli/smb/smb1cli_trans.c b/libcli/smb/smb1cli_trans.c
index fadac8e..ca0fdc1 100644
--- a/libcli/smb/smb1cli_trans.c
+++ b/libcli/smb/smb1cli_trans.c
@@ -40,7 +40,7 @@ struct smb1cli_trans_state {
 	uint16_t mid;
 	uint32_t pid;
 	uint16_t tid;
-	uint16_t uid;
+	struct smbXcli_session *session;
 	const char *pipe_name;
 	uint8_t *pipe_name_conv;
 	size_t pipe_name_conv_len;
@@ -415,7 +415,8 @@ struct tevent_req *smb1cli_trans_send(
 	uint8_t additional_flags, uint8_t clear_flags,
 	uint16_t additional_flags2, uint16_t clear_flags2,
 	uint32_t timeout_msec,
-	uint32_t pid, uint16_t tid, uint16_t uid,
+	uint32_t pid, uint16_t tid,
+	struct smbXcli_session *session,
 	const char *pipe_name, uint16_t fid, uint16_t function, int flags,
 	uint16_t *setup, uint8_t num_setup, uint8_t max_setup,
 	uint8_t *param, uint32_t num_param, uint32_t max_param,
@@ -470,7 +471,7 @@ struct tevent_req *smb1cli_trans_send(
 	state->rsetup = NULL;
 	state->pid = pid;
 	state->tid = tid;
-	state->uid = uid;
+	state->session = session;
 	ZERO_STRUCT(state->rparam);
 	ZERO_STRUCT(state->rdata);
 
@@ -513,7 +514,8 @@ struct tevent_req *smb1cli_trans_send(
 				    state->additional_flags2,
 				    state->clear_flags2,
 				    state->timeout_msec,
-				    state->pid, state->tid, state->uid,
+				    state->pid, state->tid,
+				    state->session,
 				    wct, state->vwv,
 				    iov_count, state->iov);
 	if (tevent_req_nomem(subreq, req)) {
@@ -644,7 +646,8 @@ static void smb1cli_trans_done(struct tevent_req *subreq)
 					     state->additional_flags2,
 					     state->clear_flags2,
 					     state->timeout_msec,
-					     state->pid, state->tid, state->uid,
+					     state->pid, state->tid,
+					     state->session,
 					     wct, state->vwv,
 					     iov_count, state->iov);
 		if (tevent_req_nomem(subreq2, req)) {
@@ -750,7 +753,8 @@ static void smb1cli_trans_done2(struct tevent_req *subreq2)
 					     state->additional_flags2,
 					     state->clear_flags2,
 					     state->timeout_msec,
-					     state->pid, state->tid, state->uid,
+					     state->pid, state->tid,
+					     state->session,
 					     wct, state->vwv,
 					     iov_count, state->iov);
 		if (tevent_req_nomem(subreq2, req)) {
@@ -840,7 +844,8 @@ NTSTATUS smb1cli_trans(TALLOC_CTX *mem_ctx, struct smbXcli_conn *conn,
 		uint8_t additional_flags, uint8_t clear_flags,
 		uint16_t additional_flags2, uint16_t clear_flags2,
 		uint32_t timeout_msec,
-		uint32_t pid, uint16_t tid, uint16_t uid,
+		uint32_t pid, uint16_t tid,
+		struct smbXcli_session *session,
 		const char *pipe_name, uint16_t fid, uint16_t function,
 		int flags,
 		uint16_t *setup, uint8_t num_setup, uint8_t max_setup,
@@ -874,7 +879,7 @@ NTSTATUS smb1cli_trans(TALLOC_CTX *mem_ctx, struct smbXcli_conn *conn,
 				 additional_flags, clear_flags,
 				 additional_flags2, clear_flags2,
 				 timeout_msec,
-				 pid, tid, uid,
+				 pid, tid, session,
 				 pipe_name, fid, function, flags,
 				 setup, num_setup, max_setup,
 				 param, num_param, max_param,
diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c
index 326a43d..c41890d 100644
--- a/libcli/smb/smbXcli_base.c
+++ b/libcli/smb/smbXcli_base.c
@@ -132,6 +132,10 @@ struct smbXcli_session {
 	struct smbXcli_conn *conn;
 
 	struct {
+		uint16_t session_id;
+	} smb1;
+
+	struct {
 		uint64_t session_id;
 		uint16_t session_flags;
 		DATA_BLOB application_key;
@@ -1091,7 +1095,6 @@ static bool smb1cli_req_cancel(struct tevent_req *req)
 	uint16_t flags2;
 	uint32_t pid;
 	uint16_t tid;
-	uint16_t uid;
 	uint16_t mid;
 	struct tevent_req *subreq;
 	NTSTATUS status;
@@ -1101,7 +1104,6 @@ static bool smb1cli_req_cancel(struct tevent_req *req)
 	pid  = SVAL(state->smb1.hdr, HDR_PID);
 	pid |= SVAL(state->smb1.hdr, HDR_PIDHIGH)<<16;
 	tid = SVAL(state->smb1.hdr, HDR_TID);
-	uid = SVAL(state->smb1.hdr, HDR_UID);
 	mid = SVAL(state->smb1.hdr, HDR_MID);
 
 	subreq = smb1cli_req_create(state, state->ev,
@@ -1110,7 +1112,8 @@ static bool smb1cli_req_cancel(struct tevent_req *req)
 				    flags, 0,
 				    flags2, 0,
 				    0, /* timeout */
-				    pid, tid, uid,
+				    pid, tid,
+				    state->session,
 				    0, NULL, /* vwv */
 				    0, NULL); /* bytes */
 	if (subreq == NULL) {
@@ -1147,7 +1150,7 @@ struct tevent_req *smb1cli_req_create(TALLOC_CTX *mem_ctx,
 				      uint32_t timeout_msec,
 				      uint32_t pid,
 				      uint16_t tid,
-				      uint16_t uid,
+				      struct smbXcli_session *session,
 				      uint8_t wct, uint16_t *vwv,
 				      int iov_count,
 				      struct iovec *bytes_iov)
@@ -1156,6 +1159,7 @@ struct tevent_req *smb1cli_req_create(TALLOC_CTX *mem_ctx,
 	struct smbXcli_req_state *state;
 	uint8_t flags = 0;
 	uint16_t flags2 = 0;
+	uint16_t uid = 0;
 
 	if (iov_count > MAX_SMB_IOV) {
 		/*
@@ -1171,6 +1175,11 @@ struct tevent_req *smb1cli_req_create(TALLOC_CTX *mem_ctx,
 	}
 	state->ev = ev;
 	state->conn = conn;
+	state->session = session;
+
+	if (session) {
+		uid = session->smb1.session_id;
+	}
 
 	state->smb1.recv_cmd = 0xFF;
 	state->smb1.recv_status = NT_STATUS_INTERNAL_ERROR;
@@ -1415,7 +1424,7 @@ struct tevent_req *smb1cli_req_send(TALLOC_CTX *mem_ctx,
 				    uint32_t timeout_msec,
 				    uint32_t pid,
 				    uint16_t tid,
-				    uint16_t uid,
+				    struct smbXcli_session *session,
 				    uint8_t wct, uint16_t *vwv,
 				    uint32_t num_bytes,
 				    const uint8_t *bytes)
@@ -1431,7 +1440,7 @@ struct tevent_req *smb1cli_req_send(TALLOC_CTX *mem_ctx,
 				 additional_flags, clear_flags,
 				 additional_flags2, clear_flags2,
 				 timeout_msec,
-				 pid, tid, uid,
+				 pid, tid, session,
 				 wct, vwv, 1, &iov);
 	if (req == NULL) {
 		return NULL;
@@ -3528,7 +3537,7 @@ static struct tevent_req *smbXcli_negprot_smb1_subreq(struct smbXcli_negprot_sta
 				flags, ~flags,
 				flags2, ~flags2,
 				state->timeout_msec,
-				0xFFFE, 0, 0, /* pid, tid, uid */
+				0xFFFE, 0, NULL, /* pid, tid, session */
 				0, NULL, /* wct, vwv */
 				bytes.length, bytes.data);
 }
@@ -4208,6 +4217,17 @@ struct smbXcli_session *smbXcli_session_create(TALLOC_CTX *mem_ctx,
 	return session;
 }
 
+uint16_t smb1cli_session_current_id(struct smbXcli_session *session)
+{
+	return session->smb1.session_id;
+}
+
+void smb1cli_session_set_id(struct smbXcli_session *session,
+			    uint16_t session_id)
+{
+	session->smb1.session_id = session_id;
+}
+
 uint8_t smb2cli_session_security_mode(struct smbXcli_session *session)
 {
 	struct smbXcli_conn *conn = session->conn;
diff --git a/libcli/smb/smbXcli_base.h b/libcli/smb/smbXcli_base.h
index 81a8e93..9d4847c 100644
--- a/libcli/smb/smbXcli_base.h
+++ b/libcli/smb/smbXcli_base.h
@@ -110,7 +110,7 @@ struct tevent_req *smb1cli_req_create(TALLOC_CTX *mem_ctx,
 				      uint32_t timeout_msec,
 				      uint32_t pid,
 				      uint16_t tid,
-				      uint16_t uid,
+				      struct smbXcli_session *session,
 				      uint8_t wct, uint16_t *vwv,
 				      int iov_count,
 				      struct iovec *bytes_iov);
@@ -127,7 +127,7 @@ struct tevent_req *smb1cli_req_send(TALLOC_CTX *mem_ctx,
 				    uint32_t timeout_msec,
 				    uint32_t pid,
 				    uint16_t tid,
-				    uint16_t uid,
+				    struct smbXcli_session *session,
 				    uint8_t wct, uint16_t *vwv,
 				    uint32_t num_bytes,
 				    const uint8_t *bytes);
@@ -151,7 +151,8 @@ struct tevent_req *smb1cli_trans_send(
 	uint8_t additional_flags, uint8_t clear_flags,
 	uint16_t additional_flags2, uint16_t clear_flags2,
 	uint32_t timeout_msec,
-	uint32_t pid, uint16_t tid, uint16_t uid,
+	uint32_t pid, uint16_t tid,
+	struct smbXcli_session *session,
 	const char *pipe_name, uint16_t fid, uint16_t function, int flags,
 	uint16_t *setup, uint8_t num_setup, uint8_t max_setup,
 	uint8_t *param, uint32_t num_param, uint32_t max_param,
@@ -169,7 +170,8 @@ NTSTATUS smb1cli_trans(TALLOC_CTX *mem_ctx, struct smbXcli_conn *conn,
 		uint8_t additional_flags, uint8_t clear_flags,
 		uint16_t additional_flags2, uint16_t clear_flags2,
 		uint32_t timeout_msec,
-		uint32_t pid, uint16_t tid, uint16_t uid,
+		uint32_t pid, uint16_t tid,
+		struct smbXcli_session *session,
 		const char *pipe_name, uint16_t fid, uint16_t function,
 		int flags,
 		uint16_t *setup, uint8_t num_setup, uint8_t max_setup,
@@ -245,6 +247,9 @@ NTSTATUS smbXcli_negprot(struct smbXcli_conn *conn,
 
 struct smbXcli_session *smbXcli_session_create(TALLOC_CTX *mem_ctx,
 					       struct smbXcli_conn *conn);
+uint16_t smb1cli_session_current_id(struct smbXcli_session* session);
+void smb1cli_session_set_id(struct smbXcli_session* session,
+			    uint16_t session_id);
 uint8_t smb2cli_session_security_mode(struct smbXcli_session *session);
 uint64_t smb2cli_session_current_id(struct smbXcli_session *session);
 uint16_t smb2cli_session_get_flags(struct smbXcli_session *session);
diff --git a/source3/include/client.h b/source3/include/client.h
index 5694ed0..b6e62a3 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -104,7 +104,7 @@ struct cli_state {
 		uint16_t pid;
 		uint16_t vc_num;
 		uint16_t tid;
-		uint16_t uid;
+		struct smbXcli_session *session;
 	} smb1;
 
 	struct {
diff --git a/source3/libsmb/async_smb.c b/source3/libsmb/async_smb.c
index c2986e2..a82b0ce 100644
--- a/source3/libsmb/async_smb.c
+++ b/source3/libsmb/async_smb.c
@@ -93,7 +93,7 @@ struct tevent_req *cli_smb_req_create(TALLOC_CTX *mem_ctx,
 					cli->timeout,
 					cli->smb1.pid,
 					cli->smb1.tid,
-					cli->smb1.uid,
+					cli->smb1.session,
 					wct, vwv, iov_count, bytes_iov);
 	if (state->req == NULL) {
 		talloc_free(state);
@@ -151,7 +151,7 @@ struct tevent_req *cli_smb_send(TALLOC_CTX *mem_ctx,
 				cli->timeout,
 				cli->smb1.pid,
 				cli->smb1.tid,
-				cli->smb1.uid,
+				cli->smb1.session,
 				wct, vwv, num_bytes, bytes);
 	if (state->req == NULL) {
 		talloc_free(state);
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index 4398d80..dcb8467 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -269,7 +269,10 @@ struct cli_state *cli_state_create(TALLOC_CTX *mem_ctx,
 	cli->smb1.pid = (uint16_t)getpid();
 	cli->smb1.vc_num = cli->smb1.pid;
 	cli->smb1.tid = UINT16_MAX;
-	cli->smb1.uid = UID_FIELD_INVALID;
+	cli->smb1.session = smbXcli_session_create(cli, cli->conn);
+	if (cli->smb1.session == NULL) {
+		goto error;
+	}
 
 	cli->initialised = 1;
 	return cli;
@@ -398,13 +401,13 @@ uint16_t cli_state_set_tid(struct cli_state *cli, uint16_t tid)
 
 uint16_t cli_state_get_uid(struct cli_state *cli)
 {
-	return cli->smb1.uid;
+	return smb1cli_session_current_id(cli->smb1.session);
 }
 
 uint16_t cli_state_set_uid(struct cli_state *cli, uint16_t uid)
 {
-	uint16_t ret = cli->smb1.uid;
-	cli->smb1.uid = uid;
+	uint16_t ret = smb1cli_session_current_id(cli->smb1.session);
+	smb1cli_session_set_id(cli->smb1.session, uid);
 	return ret;
 }
 
diff --git a/source3/libsmb/clitrans.c b/source3/libsmb/clitrans.c
index 5dd7008..5a27678 100644
--- a/source3/libsmb/clitrans.c
+++ b/source3/libsmb/clitrans.c
@@ -89,7 +89,8 @@ struct tevent_req *cli_trans_send(
 					additional_flags, clear_flags,
 					additional_flags2, clear_flags2,
 					cli->timeout,
-					cli->smb1.pid, cli->smb1.tid, cli->smb1.uid,
+					cli->smb1.pid, cli->smb1.tid,
+					cli->smb1.session,
 					pipe_name, fid, function, flags,
 					setup, num_setup, max_setup,
 					param, num_param, max_param,
@@ -183,7 +184,8 @@ NTSTATUS cli_trans(TALLOC_CTX *mem_ctx, struct cli_state *cli,
 			       additional_flags, clear_flags,
 			       additional_flags2, clear_flags2,
 			       cli->timeout,
-			       cli->smb1.pid, cli->smb1.tid, cli->smb1.uid,
+			       cli->smb1.pid, cli->smb1.tid,
+			       cli->smb1.session,
 			       pipe_name, fid, function, flags,
 			       setup, num_setup, max_setup,
 			       param, num_param, max_param,
diff --git a/source4/libcli/raw/clisession.c b/source4/libcli/raw/clisession.c
index d68f309..23d7fd1 100644
--- a/source4/libcli/raw/clisession.c
+++ b/source4/libcli/raw/clisession.c
@@ -55,7 +55,19 @@ struct smbcli_session *smbcli_session_init(struct smbcli_transport *transport,
 	session->pid = (uint16_t)getpid();
 	session->vuid = UID_FIELD_INVALID;
 	session->options = options;
-	
+
+	/*
+	 * for now session->vuid is still used by the callers, but we call:
+	 * smb1cli_session_set_id(session->smbXcli, session->vuid);
+	 * before using session->smbXcli, in future we should remove
+	 * session->vuid.
+	 */
+	session->smbXcli = smbXcli_session_create(session, transport->conn);
+	if (session->smbXcli == NULL) {
+		talloc_free(session);
+		return NULL;
+	}
+
 	capabilities = transport->negotiate.capabilities;
 
 	flags2 = FLAGS2_LONG_PATH_COMPONENTS | FLAGS2_EXTENDED_ATTRIBUTES;
diff --git a/source4/libcli/raw/clitransport.c b/source4/libcli/raw/clitransport.c
index f9759b1..321df76 100644
--- a/source4/libcli/raw/clitransport.c
+++ b/source4/libcli/raw/clitransport.c
@@ -214,7 +214,7 @@ struct tevent_req *smbcli_transport_setup_subreq(struct smbcli_request *req)
 	uint16_t clear_flags2;
 	uint32_t pid;
 	uint16_t tid;
-	uint16_t uid;
+	struct smbXcli_session *session = NULL;
 	uint32_t timeout_msec = transport->options.request_timeout * 1000;
 	struct iovec *bytes_iov = NULL;
 	struct tevent_req *subreq = NULL;
@@ -225,11 +225,14 @@ struct tevent_req *smbcli_transport_setup_subreq(struct smbcli_request *req)
 	pid  = SVAL(req->out.hdr, HDR_PID);
 	pid |= SVAL(req->out.hdr, HDR_PIDHIGH)<<16;
 	tid = SVAL(req->out.hdr, HDR_TID);
-	uid = SVAL(req->out.hdr, HDR_UID);
 
 	clear_flags = ~additional_flags;
 	clear_flags2 = ~additional_flags2;
 
+	if (req->session) {
+		session = req->session->smbXcli;
+	}
+
 	bytes_iov = talloc(req, struct iovec);
 	if (bytes_iov == NULL) {
 		return NULL;
@@ -248,7 +251,7 @@ struct tevent_req *smbcli_transport_setup_subreq(struct smbcli_request *req)
 				    timeout_msec,
 				    pid,
 				    tid,
-				    uid,
+				    session,
 				    req->out.wct,
 				    (uint16_t *)req->out.vwv,
 				    1, bytes_iov);
@@ -293,7 +296,7 @@ void smbcli_transport_send(struct smbcli_request *req)
 					    0, /* timeout_msec */
 					    0, /* pid */
 					    0, /* tid */
-					    0, /* uid */
+					    NULL, /* session */
 					    0, /* wct */
 					    NULL, /* vwv */
 					    0, /* iov_count */
@@ -499,7 +502,7 @@ static void smbcli_transport_break_handler(struct tevent_req *subreq)
 				    0, /* timeout_msec */
 				    0, /* pid */
 				    0, /* tid */
-				    0, /* uid */
+				    NULL, /* session */
 				    0, /* wct */
 				    NULL, /* vwv */
 				    0, /* iov_count */
diff --git a/source4/libcli/raw/libcliraw.h b/source4/libcli/raw/libcliraw.h
index b7e5e21..8cdccc1 100644
--- a/source4/libcli/raw/libcliraw.h
+++ b/source4/libcli/raw/libcliraw.h
@@ -156,6 +156,7 @@ struct smbcli_session {
 	
 	/* after a session setup the server provides us with
 	   a vuid identifying the security context */
+	struct smbXcli_session *smbXcli;
 	uint16_t vuid;
 
 	/* default pid for this session */
diff --git a/source4/libcli/raw/rawrequest.c b/source4/libcli/raw/rawrequest.c
index 1b4c8c7..56bbf25 100644
--- a/source4/libcli/raw/rawrequest.c
+++ b/source4/libcli/raw/rawrequest.c
@@ -146,6 +146,8 @@ struct smbcli_request *smbcli_request_setup_session(struct smbcli_session *sessi
 
 	if (!req) return NULL;
 
+	smb1cli_session_set_id(session->smbXcli, session->vuid);
+
 	req->session = session;
 
 	SSVAL(req->out.hdr, HDR_FLG2, session->flags2);
diff --git a/source4/libcli/raw/rawtrans.c b/source4/libcli/raw/rawtrans.c
index 8e16e5b..1df5209 100644
--- a/source4/libcli/raw/rawtrans.c
+++ b/source4/libcli/raw/rawtrans.c
@@ -37,7 +37,7 @@ static struct smbcli_request *smb_raw_trans_backend_send(struct smbcli_tree *tre
 	uint16_t clear_flags2;
 	uint32_t pid;
 	uint16_t tid;
-	uint16_t uid;
+	struct smbXcli_session *session = NULL;
 	const char *pipe_name = NULL;
 	uint8_t s;
 	uint32_t timeout_msec;
@@ -55,7 +55,10 @@ static struct smbcli_request *smb_raw_trans_backend_send(struct smbcli_tree *tre
 	pid  = SVAL(req->out.hdr, HDR_PID);
 	pid |= SVAL(req->out.hdr, HDR_PIDHIGH)<<16;
 	tid = SVAL(req->out.hdr, HDR_TID);
-	uid = SVAL(req->out.hdr, HDR_UID);
+
+	if (req->session) {
+		session = req->session->smbXcli;
+	}
 
 	clear_flags = ~additional_flags;
 	clear_flags2 = ~additional_flags2;
@@ -86,7 +89,8 @@ static struct smbcli_request *smb_raw_trans_backend_send(struct smbcli_tree *tre
 					     additional_flags2,
 					     clear_flags2,
 					     timeout_msec,
-					     pid, tid, uid,
+					     pid, tid,
+					     session,
 					     pipe_name,
 					     0xFFFF, /* fid */
 					     0, /* function */
@@ -259,7 +263,7 @@ struct smbcli_request *smb_raw_nttrans_send(struct smbcli_tree *tree,
 	uint16_t clear_flags2;
 	uint32_t pid;
 	uint16_t tid;
-	uint16_t uid;
+	struct smbXcli_session *session = NULL;
 	uint32_t timeout_msec;
 	uint32_t tmp;
 
@@ -275,7 +279,10 @@ struct smbcli_request *smb_raw_nttrans_send(struct smbcli_tree *tree,
 	pid  = SVAL(req->out.hdr, HDR_PID);
 	pid |= SVAL(req->out.hdr, HDR_PIDHIGH)<<16;
 	tid = SVAL(req->out.hdr, HDR_TID);
-	uid = SVAL(req->out.hdr, HDR_UID);
+
+	if (req->session) {
+		session = req->session->smbXcli;
+	}
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list