[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Wed Aug 1 10:26:02 MDT 2012


The branch, master has been updated
       via  b93e6ef s3:smbd: add a optional_support helper variable to reply_tcon_and_X()
       via  3fb6549 s3:smbd: make use of TCONX_FLAG_DISCONNECT_TID define
       via  3682eb8 s3:libsmb: add a optional_support helper variable
       via  137d65b s3:libsmb: add a tcon_flags helper variable
       via  d3aaa1e libcli/smb: move some TCON related defines to smb_constants.h
       via  8e1c6d4 s3:rpc_client: rename pipe_auth_data->user_session_key to transport_session_key
       via  0ec50e8 s3:libsmb: remove unused cli_state->user_session_key
       via  0068a9f s3:utils/net_rpc*: make use of cli_get_session_key()
       via  616206a s3:libnet_join: make use of cli_get_session_key() in libnet_join_joindomain_rpc()
       via  8b42f52 s3:rpc_client: make use of smbXcli_session_application_key()
       via  00cde56 s4:libcli/raw: remove unused smbcli_session->user_session_key
       via  7977d90 s4:librpc/dcerpc_smb2: sync smb2_session_key() with smb_session_key()
       via  286e249 s4:librpc/dcerpc_smb: make use of smbXcli_session_application_key()
       via  2f4f214 libcli/smb: remove unused smb2cli_session_application_key()
       via  803fb40 s4:librpc/dcerpc_smb2: make use of smbXcli_session_application_key()
       via  5f25567 libcli/smb: add smbXcli_session_application_key()
       via  ac1452c s4:libcli/smb_composite: make use of smb1cli_session_set_session_key()
       via  1a9a910 s4:libcli/smb_composite: always use set_user_session_key() helper
       via  c9eac1a s3:libsmb: make use of smb1cli_session_set_session_key()
       via  7af537e libcli/smb: allow resetting of the smb1 application_key
       via  68c1eec libcli/smb: let smb1cli_session_set_id() reset the application_key
       via  c3cb672 libcli/smb: add smb1cli_session_set_session_key()
       via  9b9ef92 s3:ctdbd_conn: use unitX_t types consistently throughout the module
      from  d4bce35 Add two flags to allow for handling of Extended Signatures (Session Key Protection) on a TCON_AND_X request and response.

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


- Log -----------------------------------------------------------------
commit b93e6ef5e70bd90a06ae80b209a10456ca461a62
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 12:01:07 2012 +0200

    s3:smbd: add a optional_support helper variable to reply_tcon_and_X()
    
    metze
    
    Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
    Autobuild-Date(master): Wed Aug  1 18:25:26 CEST 2012 on sn-devel-104

commit 3fb6549db0b12565413a89ef0662e7e8af3b389a
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 11:48:30 2012 +0200

    s3:smbd: make use of TCONX_FLAG_DISCONNECT_TID define
    
    metze

commit 3682eb80ab071ced87bb64def776a2a8722cb2b1
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 11:46:22 2012 +0200

    s3:libsmb: add a optional_support helper variable
    
    metze

commit 137d65b39790fec10f908e25633b80d22e54e0b6
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 11:45:36 2012 +0200

    s3:libsmb: add a tcon_flags helper variable
    
    metze

commit d3aaa1ebc822d3384f1821302585921d44028649
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 11:33:27 2012 +0200

    libcli/smb: move some TCON related defines to smb_constants.h
    
    metze

commit 8e1c6d42327faae5df6e384cf9573bf4dc925038
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 11:00:02 2012 +0200

    s3:rpc_client: rename pipe_auth_data->user_session_key to transport_session_key
    
    metze

commit 0ec50e8a2feddb1389f7143c35f7f2c3444cf6b9
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 10:50:30 2012 +0200

    s3:libsmb: remove unused cli_state->user_session_key
    
    metze

commit 0068a9fd930331e6f2ee49aa79489c333ae4e722
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 10:48:53 2012 +0200

    s3:utils/net_rpc*: make use of cli_get_session_key()
    
    metze

commit 616206a806761bb19bd7b6025d6068a867510bf5
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 10:30:06 2012 +0200

    s3:libnet_join: make use of cli_get_session_key() in libnet_join_joindomain_rpc()
    
    metze

commit 8b42f526f47bc8075b5a6f81b2293787ccb066bc
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 10:18:22 2012 +0200

    s3:rpc_client: make use of smbXcli_session_application_key()
    
    metze

commit 00cde56bfdf09cf71d2435f02280b44c2bb35183
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 09:41:53 2012 +0200

    s4:libcli/raw: remove unused smbcli_session->user_session_key
    
    metze

commit 7977d90f1e88d0c23b4a14ffd15bf8c077c9d701
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 09:10:09 2012 +0200

    s4:librpc/dcerpc_smb2: sync smb2_session_key() with smb_session_key()
    
    metze

commit 286e249737a40a575a9f13d8af4ef5e4e273c873
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 09:09:34 2012 +0200

    s4:librpc/dcerpc_smb: make use of smbXcli_session_application_key()
    
    metze

commit 2f4f2144f424d45d3077a7363ec733ff17999cd8
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 09:01:01 2012 +0200

    libcli/smb: remove unused smb2cli_session_application_key()
    
    metze

commit 803fb404493931d348049266de18ffd59ada3403
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 08:59:57 2012 +0200

    s4:librpc/dcerpc_smb2: make use of smbXcli_session_application_key()
    
    metze

commit 5f25567c2efd24a27bbb30f35a593bd3d9c3784f
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 08:59:01 2012 +0200

    libcli/smb: add smbXcli_session_application_key()
    
    metze

commit ac1452c4f927af621b33cb1c544b30dcf29c1903
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 08:57:40 2012 +0200

    s4:libcli/smb_composite: make use of smb1cli_session_set_session_key()
    
    metze

commit 1a9a910ce3e6b1fd6f756cb075bd2fdba465af9d
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 08:55:49 2012 +0200

    s4:libcli/smb_composite: always use set_user_session_key() helper
    
    metze

commit c9eac1af1462aa09dd20cdccda5807edaefb5cb7
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 08:54:51 2012 +0200

    s3:libsmb: make use of smb1cli_session_set_session_key()
    
    metze

commit 7af537e66f0e73ee629b3457ee78a11101f4e1c9
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 14:14:39 2012 +0200

    libcli/smb: allow resetting of the smb1 application_key
    
    We need this untill we have fixed all callers...
    
    metze

commit 68c1eec11d0cd29821025dbea7c9b55ee31897d0
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 13:25:18 2012 +0200

    libcli/smb: let smb1cli_session_set_id() reset the application_key
    
    We have some callers which reuse smbXcli_session,
    e.g. cli_state_set_uid()
    
    metze

commit c3cb672d3810cb2fb0076fac3b949df5f2462451
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 1 08:53:30 2012 +0200

    libcli/smb: add smb1cli_session_set_session_key()
    
    metze

commit 9b9ef9270129c162988785fdd7d0308f2df86604
Author: Michael Adam <obnox at samba.org>
Date:   Mon Jul 30 09:31:59 2012 -0400

    s3:ctdbd_conn: use unitX_t types consistently throughout the module
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

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

Summary of changes:
 libcli/smb/smbXcli_base.c                |   87 +++++++++++++++++++++++------
 libcli/smb/smbXcli_base.h                |    8 ++-
 libcli/smb/smb_constants.h               |   13 +++++
 source3/include/client.h                 |    4 --
 source3/include/ctdbd_conn.h             |   18 +++---
 source3/include/smb.h                    |    9 ---
 source3/lib/ctdbd_conn.c                 |   44 ++++++++--------
 source3/libnet/libnet_join.c             |   14 ++++-
 source3/librpc/rpc/dcerpc.h              |    2 +-
 source3/libsmb/cliconnect.c              |   53 +++++++++++-------
 source3/libsmb/clientgen.c               |    2 -
 source3/rpc_client/cli_pipe.c            |   23 ++++++--
 source3/smbd/reply.c                     |   13 +++--
 source3/utils/net_rpc.c                  |   11 ++++-
 source3/utils/net_rpc_join.c             |   11 ++++-
 source3/utils/net_rpc_trust.c            |   24 +++++++--
 source4/libcli/raw/libcliraw.h           |    2 -
 source4/libcli/raw/smb.h                 |    4 --
 source4/libcli/smb_composite/connect.c   |    1 -
 source4/libcli/smb_composite/sesssetup.c |   38 ++++++++------
 source4/librpc/rpc/dcerpc_smb.c          |   19 +++++--
 source4/librpc/rpc/dcerpc_smb2.c         |    4 +-
 22 files changed, 269 insertions(+), 135 deletions(-)


Changeset truncated at 500 lines:

diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c
index a363b44..37c738e 100644
--- a/libcli/smb/smbXcli_base.c
+++ b/libcli/smb/smbXcli_base.c
@@ -148,6 +148,7 @@ struct smbXcli_session {
 
 	struct {
 		uint16_t session_id;
+		DATA_BLOB application_key;
 	} smb1;
 
 	struct smb2cli_session *smb2;
@@ -4293,6 +4294,36 @@ struct smbXcli_session *smbXcli_session_create(TALLOC_CTX *mem_ctx,
 	return session;
 }
 
+NTSTATUS smbXcli_session_application_key(struct smbXcli_session *session,
+					 TALLOC_CTX *mem_ctx,
+					 DATA_BLOB *key)
+{
+	const DATA_BLOB *application_key;
+
+	*key = data_blob_null;
+
+	if (session->conn == NULL) {
+		return NT_STATUS_NO_USER_SESSION_KEY;
+	}
+
+	if (session->conn->protocol >= PROTOCOL_SMB2_02) {
+		application_key = &session->smb2->application_key;
+	} else {
+		application_key = &session->smb1.application_key;
+	}
+
+	if (application_key->length == 0) {
+		return NT_STATUS_NO_USER_SESSION_KEY;
+	}
+
+	*key = data_blob_dup_talloc(mem_ctx, *application_key);
+	if (key->data == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	return NT_STATUS_OK;
+}
+
 uint16_t smb1cli_session_current_id(struct smbXcli_session *session)
 {
 	return session->smb1.session_id;
@@ -4304,6 +4335,44 @@ void smb1cli_session_set_id(struct smbXcli_session *session,
 	session->smb1.session_id = session_id;
 }
 
+NTSTATUS smb1cli_session_set_session_key(struct smbXcli_session *session,
+					 const DATA_BLOB _session_key)
+{
+	struct smbXcli_conn *conn = session->conn;
+	uint8_t session_key[16];
+
+	if (conn == NULL) {
+		return NT_STATUS_INVALID_PARAMETER_MIX;
+	}
+
+	if (session->smb1.application_key.length != 0) {
+		/*
+		 * TODO: do not allow this...
+		 *
+		 * return NT_STATUS_INVALID_PARAMETER_MIX;
+		 */
+		data_blob_clear_free(&session->smb1.application_key);
+	}
+
+	if (_session_key.length == 0) {
+		return NT_STATUS_OK;
+	}
+
+	ZERO_STRUCT(session_key);
+	memcpy(session_key, _session_key.data,
+	       MIN(_session_key.length, sizeof(session_key)));
+
+	session->smb1.application_key = data_blob_talloc(session,
+							 session_key,
+							 sizeof(session_key));
+	ZERO_STRUCT(session_key);
+	if (session->smb1.application_key.data == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	return NT_STATUS_OK;
+}
+
 uint8_t smb2cli_session_security_mode(struct smbXcli_session *session)
 {
 	struct smbXcli_conn *conn = session->conn;
@@ -4331,24 +4400,6 @@ uint16_t smb2cli_session_get_flags(struct smbXcli_session *session)
 	return session->smb2->session_flags;
 }
 
-NTSTATUS smb2cli_session_application_key(struct smbXcli_session *session,
-					 TALLOC_CTX *mem_ctx,
-					 DATA_BLOB *key)
-{
-	*key = data_blob_null;
-
-	if (session->smb2->application_key.length == 0) {
-		return NT_STATUS_NO_USER_SESSION_KEY;
-	}
-
-	*key = data_blob_dup_talloc(mem_ctx, session->smb2->application_key);
-	if (key->data == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	return NT_STATUS_OK;
-}
-
 void smb2cli_session_set_id_and_flags(struct smbXcli_session *session,
 				      uint64_t session_id,
 				      uint16_t session_flags)
diff --git a/libcli/smb/smbXcli_base.h b/libcli/smb/smbXcli_base.h
index c55bf53..3f78cd5 100644
--- a/libcli/smb/smbXcli_base.h
+++ b/libcli/smb/smbXcli_base.h
@@ -248,15 +248,17 @@ NTSTATUS smbXcli_negprot(struct smbXcli_conn *conn,
 
 struct smbXcli_session *smbXcli_session_create(TALLOC_CTX *mem_ctx,
 					       struct smbXcli_conn *conn);
+NTSTATUS smbXcli_session_application_key(struct smbXcli_session *session,
+					 TALLOC_CTX *mem_ctx,
+					 DATA_BLOB *key);
 uint16_t smb1cli_session_current_id(struct smbXcli_session* session);
 void smb1cli_session_set_id(struct smbXcli_session* session,
 			    uint16_t session_id);
+NTSTATUS smb1cli_session_set_session_key(struct smbXcli_session *session,
+					 const DATA_BLOB _session_key);
 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);
-NTSTATUS smb2cli_session_application_key(struct smbXcli_session *session,
-					 TALLOC_CTX *mem_ctx,
-					 DATA_BLOB *key);
 void smb2cli_session_set_id_and_flags(struct smbXcli_session *session,
 				      uint64_t session_id,
 				      uint16_t session_flags);
diff --git a/libcli/smb/smb_constants.h b/libcli/smb/smb_constants.h
index aaf87c1..8cb3b6e 100644
--- a/libcli/smb/smb_constants.h
+++ b/libcli/smb/smb_constants.h
@@ -262,6 +262,19 @@ enum csc_policy {
 	CSC_POLICY_DISABLE=3
 };
 
+/* TCONX Flag (smb_vwv2). [MS-SMB] 2.2.4.7.1 */
+#define TCONX_FLAG_DISCONNECT_TID       0x0001
+#define TCONX_FLAG_EXTENDED_SIGNATURES  0x0004
+#define TCONX_FLAG_EXTENDED_RESPONSE	0x0008
+
+/* this is used on a TConX. [MS-SMB] 2.2.4.7.2 */
+#define SMB_SUPPORT_SEARCH_BITS        0x0001
+#define SMB_SHARE_IN_DFS               0x0002
+#define SMB_CSC_MASK                   0x000C
+#define SMB_CSC_POLICY_SHIFT           2
+#define SMB_UNIQUE_FILE_NAME           0x0010
+#define SMB_EXTENDED_SIGNATURES        0x0020
+
 /* NT Flags2 bits - cifs6.txt section 3.1.2 */
 #define FLAGS2_LONG_PATH_COMPONENTS    0x0001
 #define FLAGS2_EXTENDED_ATTRIBUTES     0x0002
diff --git a/source3/include/client.h b/source3/include/client.h
index 748f78e..f6aacea 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -77,10 +77,6 @@ struct cli_state {
 	bool dfsroot;
 	bool backup_intent;
 
-	/* the session key for this CLI, outside
-	   any per-pipe authenticaion */
-	DATA_BLOB user_session_key;
-
 	/* The list of pipes currently open on this connection. */
 	struct rpc_pipe_client *pipe_list;
 
diff --git a/source3/include/ctdbd_conn.h b/source3/include/ctdbd_conn.h
index b1a58cb..5778a92 100644
--- a/source3/include/ctdbd_conn.h
+++ b/source3/include/ctdbd_conn.h
@@ -29,7 +29,7 @@ struct messaging_rec;
 NTSTATUS ctdbd_messaging_connection(TALLOC_CTX *mem_ctx,
 				    struct ctdbd_connection **pconn);
 
-uint32 ctdbd_vnn(const struct ctdbd_connection *conn);
+uint32_t ctdbd_vnn(const struct ctdbd_connection *conn);
 
 NTSTATUS ctdbd_register_msg_ctx(struct ctdbd_connection *conn,
 				struct messaging_context *msg_ctx);
@@ -38,13 +38,13 @@ struct messaging_context *ctdb_conn_msg_ctx(struct ctdbd_connection *conn);
 int ctdbd_conn_get_fd(struct ctdbd_connection *conn);
 
 NTSTATUS ctdbd_messaging_send(struct ctdbd_connection *conn,
-			      uint32 dst_vnn, uint64 dst_srvid,
+			      uint32_t dst_vnn, uint64_t dst_srvid,
 			      struct messaging_rec *msg);
 NTSTATUS ctdbd_messaging_send_blob(struct ctdbd_connection *conn,
-				   uint32 dst_vnn, uint64 dst_srvid,
+				   uint32_t dst_vnn, uint64_t dst_srvid,
 				   const uint8_t *buf, size_t buflen);
 
-bool ctdbd_process_exists(struct ctdbd_connection *conn, uint32 vnn,
+bool ctdbd_process_exists(struct ctdbd_connection *conn, uint32_t vnn,
 			  pid_t pid);
 bool ctdb_processes_exist(struct ctdbd_connection *conn,
 			  const struct server_id *pids, int num_pids,
@@ -59,14 +59,14 @@ char *ctdbd_dbpath(struct ctdbd_connection *conn,
 NTSTATUS ctdbd_db_attach(struct ctdbd_connection *conn, const char *name,
 			 uint32_t *db_id, int tdb_flags);
 
-NTSTATUS ctdbd_migrate(struct ctdbd_connection *conn, uint32 db_id,
+NTSTATUS ctdbd_migrate(struct ctdbd_connection *conn, uint32_t db_id,
 		       TDB_DATA key);
 
-NTSTATUS ctdbd_fetch(struct ctdbd_connection *conn, uint32 db_id,
+NTSTATUS ctdbd_fetch(struct ctdbd_connection *conn, uint32_t db_id,
 		     TDB_DATA key, TALLOC_CTX *mem_ctx, TDB_DATA *data,
 		     bool local_copy);
 
-NTSTATUS ctdbd_traverse(uint32 db_id,
+NTSTATUS ctdbd_traverse(uint32_t db_id,
 			void (*fn)(TDB_DATA key, TDB_DATA data,
 				   void *private_data),
 			void *private_data);
@@ -80,8 +80,8 @@ NTSTATUS ctdbd_register_ips(struct ctdbd_connection *conn,
 
 NTSTATUS ctdbd_register_reconfigure(struct ctdbd_connection *conn);
 
-NTSTATUS ctdbd_control_local(struct ctdbd_connection *conn, uint32 opcode, 
-			     uint64_t srvid, uint32_t flags, TDB_DATA data, 
+NTSTATUS ctdbd_control_local(struct ctdbd_connection *conn, uint32_t opcode,
+			     uint64_t srvid, uint32_t flags, TDB_DATA data,
 			     TALLOC_CTX *mem_ctx, TDB_DATA *outdata,
 			     int *cstatus);
 NTSTATUS ctdb_watch_us(struct ctdbd_connection *conn);
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 310cbbb..c6e6fb3 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -399,10 +399,6 @@ Offset  Data			length.
 #define smb_ntcreate_ImpersonationLevel (smb_vwv0 + 43)
 #define smb_ntcreate_SecurityFlags (smb_vwv0 + 47)
 
-/* this is used on a TConX. I'm not sure the name is very helpful though */
-#define SMB_SUPPORT_SEARCH_BITS        0x0001
-#define SMB_SHARE_IN_DFS               0x0002
-
 /* Named pipe write mode flags. Used in writeX calls. */
 #define PIPE_RAW_MODE 0x4
 #define PIPE_START_MESSAGE 0x8
@@ -621,11 +617,6 @@ char *strdup(char *s);
 #define BROWSER_ELECTION_VERSION	0x010f
 #define BROWSER_CONSTANT	0xaa55
 
-/* TCONX Flag (smb_vwv2). */
-#define TCONX_FLAG_EXTENDED_RESPONSE	0x8
-#define TCONX_FLAG_EXTENDED_SIGNATURES  0x4
-#define SMB_EXTENDED_SIGNATURES		0x20
-
 /* File Status Flags. See:
 
 http://msdn.microsoft.com/en-us/library/cc246334(PROT.13).aspx
diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c
index 9bd5178..4bad3f0 100644
--- a/source3/lib/ctdbd_conn.c
+++ b/source3/lib/ctdbd_conn.c
@@ -53,9 +53,9 @@
 
 struct ctdbd_connection {
 	struct messaging_context *msg_ctx;
-	uint32 reqid;
-	uint32 our_vnn;
-	uint64 rand_srvid;
+	uint32_t reqid;
+	uint32_t our_vnn;
+	uint64_t rand_srvid;
 	struct ctdb_packet_context *pkt;
 	struct fd_event *fde;
 
@@ -73,8 +73,8 @@ static uint32_t ctdbd_next_reqid(struct ctdbd_connection *conn)
 }
 
 static NTSTATUS ctdbd_control(struct ctdbd_connection *conn,
-			      uint32_t vnn, uint32 opcode, 
-			      uint64_t srvid, uint32_t flags, TDB_DATA data, 
+			      uint32_t vnn, uint32_t opcode,
+			      uint64_t srvid, uint32_t flags, TDB_DATA data,
 			      TALLOC_CTX *mem_ctx, TDB_DATA *outdata,
 			      int *cstatus);
 
@@ -120,7 +120,7 @@ NTSTATUS register_with_ctdbd(struct ctdbd_connection *conn, uint64_t srvid)
 /*
  * get our vnn from the cluster
  */
-static NTSTATUS get_cluster_vnn(struct ctdbd_connection *conn, uint32 *vnn)
+static NTSTATUS get_cluster_vnn(struct ctdbd_connection *conn, uint32_t *vnn)
 {
 	int32_t cstatus=-1;
 	NTSTATUS status;
@@ -187,7 +187,7 @@ fail:
 	return ret;
 }
 
-uint32 ctdbd_vnn(const struct ctdbd_connection *conn)
+uint32_t ctdbd_vnn(const struct ctdbd_connection *conn)
 {
 	return conn->our_vnn;
 }
@@ -240,13 +240,13 @@ static bool ctdb_req_complete(const uint8_t *buf, size_t available,
 			      size_t *length,
 			      void *private_data)
 {
-	uint32 msglen;
+	uint32_t msglen;
 
 	if (available < sizeof(msglen)) {
 		return False;
 	}
 
-	msglen = *((const uint32 *)buf);
+	msglen = *((const uint32_t *)buf);
 
 	DEBUG(11, ("msglen = %d\n", msglen));
 
@@ -371,7 +371,7 @@ static NTSTATUS ctdb_packet_fd_read_sync(struct ctdb_packet_context *ctx)
  * messages that might come in between.
  */
 
-static NTSTATUS ctdb_read_req(struct ctdbd_connection *conn, uint32 reqid,
+static NTSTATUS ctdb_read_req(struct ctdbd_connection *conn, uint32_t reqid,
 			      TALLOC_CTX *mem_ctx, void *result)
 {
 	struct ctdb_req_header *hdr;
@@ -740,7 +740,7 @@ NTSTATUS ctdbd_register_msg_ctx(struct ctdbd_connection *conn,
  */
 
 NTSTATUS ctdbd_messaging_send(struct ctdbd_connection *conn,
-			      uint32 dst_vnn, uint64 dst_srvid,
+			      uint32_t dst_vnn, uint64_t dst_srvid,
 			      struct messaging_rec *msg)
 {
 	DATA_BLOB blob;
@@ -764,7 +764,7 @@ NTSTATUS ctdbd_messaging_send(struct ctdbd_connection *conn,
 }
 
 NTSTATUS ctdbd_messaging_send_blob(struct ctdbd_connection *conn,
-				   uint32 dst_vnn, uint64 dst_srvid,
+				   uint32_t dst_vnn, uint64_t dst_srvid,
 				   const uint8_t *buf, size_t buflen)
 {
 	struct ctdb_req_message r;
@@ -806,9 +806,9 @@ NTSTATUS ctdbd_messaging_send_blob(struct ctdbd_connection *conn,
  * send/recv a generic ctdb control message
  */
 static NTSTATUS ctdbd_control(struct ctdbd_connection *conn,
-			      uint32_t vnn, uint32 opcode, 
-			      uint64_t srvid, uint32_t flags, 
-			      TDB_DATA data, 
+			      uint32_t vnn, uint32_t opcode,
+			      uint64_t srvid, uint32_t flags,
+			      TDB_DATA data,
 			      TALLOC_CTX *mem_ctx, TDB_DATA *outdata,
 			      int *cstatus)
 {
@@ -904,7 +904,7 @@ static NTSTATUS ctdbd_control(struct ctdbd_connection *conn,
 /*
  * see if a remote process exists
  */
-bool ctdbd_process_exists(struct ctdbd_connection *conn, uint32 vnn, pid_t pid)
+bool ctdbd_process_exists(struct ctdbd_connection *conn, uint32_t vnn, pid_t pid)
 {
 	struct server_id id;
 	bool result;
@@ -1328,7 +1328,7 @@ NTSTATUS ctdbd_db_attach(struct ctdbd_connection *conn,
 /*
  * force the migration of a record to this node
  */
-NTSTATUS ctdbd_migrate(struct ctdbd_connection *conn, uint32 db_id,
+NTSTATUS ctdbd_migrate(struct ctdbd_connection *conn, uint32_t db_id,
 		       TDB_DATA key)
 {
 	struct ctdb_req_call req;
@@ -1390,7 +1390,7 @@ NTSTATUS ctdbd_migrate(struct ctdbd_connection *conn, uint32 db_id,
 /*
  * remotely fetch a record (read-only)
  */
-NTSTATUS ctdbd_fetch(struct ctdbd_connection *conn, uint32 db_id,
+NTSTATUS ctdbd_fetch(struct ctdbd_connection *conn, uint32_t db_id,
 		     TDB_DATA key, TALLOC_CTX *mem_ctx, TDB_DATA *data,
 		     bool local_copy)
 {
@@ -1536,7 +1536,7 @@ static NTSTATUS ctdb_traverse_handler(uint8_t *buf, size_t length,
   everything in-line.
 */
 
-NTSTATUS ctdbd_traverse(uint32 db_id,
+NTSTATUS ctdbd_traverse(uint32_t db_id,
 			void (*fn)(TDB_DATA key, TDB_DATA data,
 				   void *private_data),
 			void *private_data)
@@ -1745,8 +1745,8 @@ NTSTATUS ctdbd_register_reconfigure(struct ctdbd_connection *conn)
 /*
   call a control on the local node
  */
-NTSTATUS ctdbd_control_local(struct ctdbd_connection *conn, uint32 opcode, 
-			     uint64_t srvid, uint32_t flags, TDB_DATA data, 
+NTSTATUS ctdbd_control_local(struct ctdbd_connection *conn, uint32_t opcode,
+			     uint64_t srvid, uint32_t flags, TDB_DATA data,
 			     TALLOC_CTX *mem_ctx, TDB_DATA *outdata,
 			     int *cstatus)
 {
@@ -1800,7 +1800,7 @@ NTSTATUS ctdb_unwatch(struct ctdbd_connection *conn)
 #else
 
 NTSTATUS ctdbd_messaging_send_blob(struct ctdbd_connection *conn,
-				   uint32 dst_vnn, uint64 dst_srvid,
+				   uint32_t dst_vnn, uint64_t dst_srvid,
 				   const uint8_t *buf, size_t buflen)
 {
 	return NT_STATUS_NOT_IMPLEMENTED;
diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c
index c9b2282..399c13a 100644
--- a/source3/libnet/libnet_join.c
+++ b/source3/libnet/libnet_join.c
@@ -853,6 +853,7 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 	union samr_UserInfo user_info;
 	struct dcerpc_binding_handle *b = NULL;
 
+	DATA_BLOB session_key = data_blob_null;
 	struct samr_CryptPassword crypt_pwd;
 	struct samr_CryptPasswordEx crypt_pwd_ex;
 
@@ -888,6 +889,13 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 
 	b = pipe_hnd->binding_handle;
 
+	status = cli_get_session_key(mem_ctx, pipe_hnd, &session_key);
+	if (!NT_STATUS_IS_OK(status)) {
+		DEBUG(0,("Error getting session_key of SAM pipe. Error was %s\n",
+			nt_errstr(status)));
+		goto done;
+	}
+
 	status = dcerpc_samr_Connect2(b, mem_ctx,
 				      pipe_hnd->desthost,
 				      SAMR_ACCESS_ENUM_DOMAINS
@@ -1064,7 +1072,7 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 	/* Set password on machine account - first try level 26 */
 
 	init_samr_CryptPasswordEx(r->in.machine_password,
-				  &cli->user_session_key,
+				  &session_key,
 				  &crypt_pwd_ex);
 
 	user_info.info26.password = crypt_pwd_ex;
@@ -1081,7 +1089,7 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 		/* retry with level 24 */
 
 		init_samr_CryptPassword(r->in.machine_password,
-					&cli->user_session_key,
+					&session_key,
 					&crypt_pwd);
 
 		user_info.info24.password = crypt_pwd;
@@ -1125,6 +1133,8 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 		return status;
 	}
 
+	data_blob_clear_free(&session_key);
+
 	if (is_valid_policy_hnd(&sam_pol)) {
 		dcerpc_samr_Close(b, mem_ctx, &sam_pol, &result);
 	}
diff --git a/source3/librpc/rpc/dcerpc.h b/source3/librpc/rpc/dcerpc.h
index a91b06e..b3ae3b4 100644
--- a/source3/librpc/rpc/dcerpc.h
+++ b/source3/librpc/rpc/dcerpc.h
@@ -45,7 +45,7 @@ struct pipe_auth_data {
 	/* Only the client code uses these 3 for now */
 	char *domain;
 	char *user_name;
-	DATA_BLOB user_session_key;
+	DATA_BLOB transport_session_key;
 };
 
 /* The following definitions come from librpc/rpc/dcerpc_helpers.c  */
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index 17b5af6..9850511 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -72,18 +72,6 @@ static NTSTATUS smb_bytes_talloc_string(TALLOC_CTX *mem_ctx,
 	return NT_STATUS_OK;
 }


-- 
Samba Shared Repository


More information about the samba-cvs mailing list