[SCM] Samba Shared Repository - branch master updated

Andreas Schneider asn at samba.org
Fri Dec 9 12:10:03 UTC 2016


The branch, master has been updated
       via  5ca59a1 s3:libsmb: don't pass 'passlen' to cli_tree_connect[_send]() and allow pass=NULL
       via  75aa174 s3:libsmb: avoid using cli->{use_kerberos,...} in remote_password_change()
       via  77a7e72 s3:client: avoid using cli->{use_kerberos,...} for cli_session_creds_init() in smbspool.c
       via  9bf8805 s3:client: make use of cli_tree_connect_creds() in smbspool.c
       via  bae607a s3:libsmb: add cli_tree_connect_creds()
       via  d0d17cd s3:libsmb: fix 'client lanman auth = no' DEBUG message in cli_session_setup_creds_send()
       via  d6216b8 s3:libsmb: fix memory leak in cli_raw_ntlm_smb_encryption_start()
       via  3c8e9a0 s3:torture: make use of cli_full_connection_creds() in torture.c
       via  182d5e7 auth/credentials: clear all unused blobs in cli_credentials_get_ntlm_response()
       via  4c9462f auth/credentials: fix cut'n'paste error in cli_credentials_get_principal_and_obtained()
       via  5d4aa22 auth/credentials: let cli_credentials_parse_string() handle the "winbind separator"
      from  f5536ce ctdb: add test script for ctdb_mutex_ceph_rados_helper

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


- Log -----------------------------------------------------------------
commit 5ca59a1772afb6c8b4ec06d1b92b7ad6d2d149d1
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Dec 8 07:13:57 2016 +0100

    s3:libsmb: don't pass 'passlen' to cli_tree_connect[_send]() and allow pass=NULL
    
    There're no callers which try to pass a raw lm_response directly anymore.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    
    Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
    Autobuild-Date(master): Fri Dec  9 13:09:37 CET 2016 on sn-devel-144

commit 75aa174e8df5b34e4b9745c9da5f164573f513c3
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sun Oct 30 16:10:03 2016 +0100

    s3:libsmb: avoid using cli->{use_kerberos,...} in remote_password_change()
    
    As we pass flags=0 to cli_connect_nb() all values can only be false,
    so we can use false directly.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 77a7e72f8823119be29f3f52cf073d8d721d04ec
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sun Oct 30 16:21:31 2016 +0100

    s3:client: avoid using cli->{use_kerberos,...} for cli_session_creds_init() in smbspool.c
    
    CLI_FULL_CONNECTION_USE_KERBEROS is the only possible flag the
    caller of smb_complete_connection() will pass, so we can avoid
    use it directly instead of going via cli_start_connection()
    to use cli->use_kerberos.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 9bf8805ee98e39310dd54d5e666d7abcc2ebe1ff
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Dec 8 06:54:29 2016 +0100

    s3:client: make use of cli_tree_connect_creds() in smbspool.c
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit bae607af36786acac4454b49fc0d36ad92e4c715
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Dec 7 17:32:58 2016 +0100

    s3:libsmb: add cli_tree_connect_creds()
    
    This can be used with a valid creds structure in order
    to do a share level authentication or with NULL in the cases
    we assume a modern server already.
    
    Later we can change the ordering and implement
    cli_tree_connect() on top of cli_tree_connect_creds().
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit d0d17cdb777df668ca57344907a58fbfe295b511
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Dec 7 17:18:01 2016 +0100

    s3:libsmb: fix 'client lanman auth = no' DEBUG message in cli_session_setup_creds_send()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit d6216b8f375fe553a1dbe9b85da3b994384ac392
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Nov 3 13:49:43 2016 +0100

    s3:libsmb: fix memory leak in cli_raw_ntlm_smb_encryption_start()
    
    smb_trans_enc_state is a talloc pointer now, so we can talloc_move()
    the gensec_security to the correct talloc parent.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12408
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 3c8e9a0ad3e6d23494cf4707b1e1f8be2972eb45
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Oct 28 12:44:51 2016 +0200

    s3:torture: make use of cli_full_connection_creds() in torture.c
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 182d5e73a9f0435c19a1723af785cae0d410d697
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Dec 7 17:17:44 2016 +0100

    auth/credentials: clear all unused blobs in cli_credentials_get_ntlm_response()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 4c9462f93b2e88c2da39320ababfb95d20b02185
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 8 07:19:11 2016 +0100

    auth/credentials: fix cut'n'paste error in cli_credentials_get_principal_and_obtained()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 5d4aa22f559d051fe38992af8c17d1ae0ea11cf2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Oct 28 15:55:48 2016 +0200

    auth/credentials: let cli_credentials_parse_string() handle the "winbind separator"
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

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

Summary of changes:
 auth/credentials/credentials.c          | 16 ++++++++++--
 auth/credentials/credentials_internal.h |  2 ++
 auth/credentials/credentials_ntlm.c     | 16 +++++++++---
 source3/client/client.c                 |  2 +-
 source3/client/smbspool.c               | 16 +++++++-----
 source3/lib/util_sd.c                   |  4 +--
 source3/libsmb/cliconnect.c             | 39 +++++++++++++++++++-----------
 source3/libsmb/clidfs.c                 |  5 ++--
 source3/libsmb/clifsinfo.c              | 18 +++++++-------
 source3/libsmb/libsmb_server.c          |  6 ++---
 source3/libsmb/passchange.c             | 10 ++++----
 source3/libsmb/proto.h                  |  5 +++-
 source3/nmbd/nmbd_synclists.c           |  2 +-
 source3/torture/test_smb2.c             | 18 +++++++-------
 source3/torture/torture.c               | 43 ++++++++++++++++++---------------
 source3/utils/net_rpc.c                 |  4 +--
 source3/utils/smbcacls.c                |  2 +-
 source3/winbindd/winbindd_cm.c          |  2 +-
 18 files changed, 126 insertions(+), 84 deletions(-)


Changeset truncated at 500 lines:

diff --git a/auth/credentials/credentials.c b/auth/credentials/credentials.c
index b8171f3..c8f86ba 100644
--- a/auth/credentials/credentials.c
+++ b/auth/credentials/credentials.c
@@ -115,6 +115,8 @@ _PUBLIC_ struct cli_credentials *cli_credentials_init(TALLOC_CTX *mem_ctx)
 
 	cred->forced_sasl_mech = NULL;
 
+	cred->winbind_separator = '\\';
+
 	return cred;
 }
 
@@ -291,7 +293,7 @@ _PUBLIC_ const char *cli_credentials_get_principal_and_obtained(struct cli_crede
 					       cli_credentials_get_username(cred),
 					       cli_credentials_get_domain(cred));
 		} else {
-			*obtained = MIN(cred->domain_obtained, cred->username_obtained);
+			*obtained = MIN(cred->realm_obtained, cred->username_obtained);
 			return talloc_asprintf(mem_ctx, "%s@%s", 
 					       cli_credentials_get_username(cred),
 					       cli_credentials_get_realm(cred));
@@ -746,7 +748,10 @@ _PUBLIC_ void cli_credentials_parse_string(struct cli_credentials *credentials,
 		*p = 0;
 		cli_credentials_set_realm(credentials, p+1, obtained);
 		return;
-	} else if ((p = strchr_m(uname,'\\')) || (p = strchr_m(uname, '/'))) {
+	} else if ((p = strchr_m(uname,'\\'))
+		   || (p = strchr_m(uname, '/'))
+		   || (p = strchr_m(uname, credentials->winbind_separator)))
+	{
 		*p = 0;
 		cli_credentials_set_domain(credentials, uname, obtained);
 		uname = p+1;
@@ -794,6 +799,8 @@ _PUBLIC_ const char *cli_credentials_get_unparsed_name(struct cli_credentials *c
 _PUBLIC_ void cli_credentials_set_conf(struct cli_credentials *cred, 
 			      struct loadparm_context *lp_ctx)
 {
+	const char *sep = NULL;
+
 	cli_credentials_set_username(cred, "", CRED_UNINITIALISED);
 	if (lpcfg_parm_is_cmdline(lp_ctx, "workgroup")) {
 		cli_credentials_set_domain(cred, lpcfg_workgroup(lp_ctx), CRED_SPECIFIED);
@@ -810,6 +817,11 @@ _PUBLIC_ void cli_credentials_set_conf(struct cli_credentials *cred,
 	} else {
 		cli_credentials_set_realm(cred, lpcfg_realm(lp_ctx), CRED_UNINITIALISED);
 	}
+
+	sep = lpcfg_winbind_separator(lp_ctx);
+	if (sep != NULL && sep[0] != '\0') {
+		cred->winbind_separator = *lpcfg_winbind_separator(lp_ctx);
+	}
 }
 
 /**
diff --git a/auth/credentials/credentials_internal.h b/auth/credentials/credentials_internal.h
index aa01ccc..f88ae70 100644
--- a/auth/credentials/credentials_internal.h
+++ b/auth/credentials/credentials_internal.h
@@ -113,6 +113,8 @@ struct cli_credentials {
 
 	/* Whether any callback is currently running */
 	bool callback_running;
+
+	char winbind_separator;
 };
 
 #endif /* __CREDENTIALS_INTERNAL_H__ */
diff --git a/auth/credentials/credentials_ntlm.c b/auth/credentials/credentials_ntlm.c
index 3603647..2a4c141 100644
--- a/auth/credentials/credentials_ntlm.c
+++ b/auth/credentials/credentials_ntlm.c
@@ -261,21 +261,29 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
 	}
 
 done:
-	if (_lm_response) {
+	if (_lm_response != NULL) {
 		talloc_steal(mem_ctx, lm_response.data);
 		*_lm_response = lm_response;
+	} else {
+		data_blob_clear(&lm_response);
 	}
-	if (_nt_response) {
+	if (_nt_response != NULL) {
 		talloc_steal(mem_ctx, nt_response.data);
 		*_nt_response = nt_response;
+	} else {
+		data_blob_clear(&nt_response);
 	}
-	if (_lm_session_key) {
+	if (_lm_session_key != NULL) {
 		talloc_steal(mem_ctx, lm_session_key.data);
 		*_lm_session_key = lm_session_key;
+	} else {
+		data_blob_clear(&lm_session_key);
 	}
-	if (_session_key) {
+	if (_session_key != NULL) {
 		talloc_steal(mem_ctx, session_key.data);
 		*_session_key = session_key;
+	} else {
+		data_blob_clear(&session_key);
 	}
 	TALLOC_FREE(frame);
 	return NT_STATUS_OK;
diff --git a/source3/client/client.c b/source3/client/client.c
index 65696f9..224ec07 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -4638,7 +4638,7 @@ static int cmd_tcon(void)
 		return 1;
 	}
 
-	status = cli_tree_connect(cli, sharename, "?????", "", 0);
+	status = cli_tree_connect(cli, sharename, "?????", NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		d_printf("tcon failed: %s\n", nt_errstr(status));
 		return -1;
diff --git a/source3/client/smbspool.c b/source3/client/smbspool.c
index 7448b47..a447836 100644
--- a/source3/client/smbspool.c
+++ b/source3/client/smbspool.c
@@ -406,6 +406,7 @@ smb_complete_connection(const char *myname,
 	struct cli_state *cli;	/* New connection */
 	NTSTATUS        nt_status;
 	struct cli_credentials *creds = NULL;
+	bool use_kerberos = false;
 
 	/* Start the SMB connection */
 	*need_auth = false;
@@ -425,15 +426,19 @@ smb_complete_connection(const char *myname,
 		return NULL;
 	}
 
+	if (flags & CLI_FULL_CONNECTION_USE_KERBEROS) {
+		use_kerberos = true;
+	}
+
 	creds = cli_session_creds_init(cli,
 				       username,
 				       workgroup,
 				       NULL, /* realm */
 				       password,
-				       cli->use_kerberos,
-				       cli->fallback_after_kerberos,
-				       cli->use_ccache,
-				       cli->pw_nt_hash);
+				       use_kerberos,
+				       false, /* fallback_after_kerberos */
+				       false, /* use_ccache */
+				       false); /* password_is_nt_hash */
 	if (creds == NULL) {
 		fprintf(stderr, "ERROR: cli_session_creds_init failed\n");
 		cli_shutdown(cli);
@@ -453,8 +458,7 @@ smb_complete_connection(const char *myname,
 		return NULL;
 	}
 
-	nt_status = cli_tree_connect(cli, share, "?????", password,
-				     strlen(password) + 1);
+	nt_status = cli_tree_connect_creds(cli, share, "?????", creds);
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		fprintf(stderr, "ERROR: Tree connect failed (%s)\n",
 			nt_errstr(nt_status));
diff --git a/source3/lib/util_sd.c b/source3/lib/util_sd.c
index 9a7b34f..d79fe79 100644
--- a/source3/lib/util_sd.c
+++ b/source3/lib/util_sd.c
@@ -93,7 +93,7 @@ static NTSTATUS cli_lsa_lookup_sid(struct cli_state *cli,
 	char **domains;
 	char **names;
 
-	status = cli_tree_connect(cli, "IPC$", "?????", "", 0);
+	status = cli_tree_connect(cli, "IPC$", "?????", NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		goto tcon_fail;
 	}
@@ -173,7 +173,7 @@ static NTSTATUS cli_lsa_lookup_name(struct cli_state *cli,
 	struct dom_sid *sids;
 	enum lsa_SidType *types;
 
-	status = cli_tree_connect(cli, "IPC$", "?????", "", 0);
+	status = cli_tree_connect(cli, "IPC$", "?????", NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		goto tcon_fail;
 	}
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index a32d378..559712e 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -1502,9 +1502,8 @@ struct tevent_req *cli_session_setup_creds_send(TALLOC_CTX *mem_ctx,
 		}
 	} else {
 		if (!lp_client_lanman_auth()) {
-			DEBUG(1, ("Server requested LM password but "
-				  "'client lanman auth = no' "
-				  "or 'client ntlmv2 auth = yes' is set\n"));
+			DEBUG(1, ("Server requested user level LM password but "
+				  "'client lanman auth = no' is set.\n"));
 			tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED);
 			return tevent_req_post(req, ev);
 		}
@@ -2205,10 +2204,16 @@ static void cli_tree_connect_raw_done(struct tevent_req *subreq);
 
 static struct tevent_req *cli_tree_connect_send(
 	TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct cli_state *cli,
-	const char *share, const char *dev, const char *pass, int passlen)
+	const char *share, const char *dev, const char *pass)
 {
 	struct tevent_req *req, *subreq;
 	struct cli_tree_connect_state *state;
+	int passlen;
+
+	if (pass == NULL) {
+		pass = "";
+	}
+	passlen = strlen(pass) + 1;
 
 	req = tevent_req_create(mem_ctx, &state,
 				struct cli_tree_connect_state);
@@ -2313,7 +2318,7 @@ static NTSTATUS cli_tree_connect_recv(struct tevent_req *req)
 }
 
 NTSTATUS cli_tree_connect(struct cli_state *cli, const char *share,
-			  const char *dev, const char *pass, int passlen)
+			  const char *dev, const char *pass)
 {
 	struct tevent_context *ev;
 	struct tevent_req *req;
@@ -2326,7 +2331,7 @@ NTSTATUS cli_tree_connect(struct cli_state *cli, const char *share,
 	if (ev == NULL) {
 		goto fail;
 	}
-	req = cli_tree_connect_send(ev, ev, cli, share, dev, pass, passlen);
+	req = cli_tree_connect_send(ev, ev, cli, share, dev, pass);
 	if (req == NULL) {
 		goto fail;
 	}
@@ -2339,6 +2344,19 @@ fail:
 	return status;
 }
 
+NTSTATUS cli_tree_connect_creds(struct cli_state *cli,
+				const char *share, const char *dev,
+				struct cli_credentials *creds)
+{
+	const char *pw = NULL;
+
+	if (creds != NULL) {
+		pw = cli_credentials_get_password(creds);
+	}
+
+	return cli_tree_connect(cli, share, dev, pw);
+}
+
 /****************************************************************************
  Send a tree disconnect.
 ****************************************************************************/
@@ -2991,7 +3009,6 @@ static void cli_full_connection_creds_tcon_start(struct tevent_req *req)
 		req, struct cli_full_connection_creds_state);
 	struct tevent_req *subreq = NULL;
 	const char *password = NULL;
-	int pw_len = 0;
 
 	if (state->service == NULL) {
 		tevent_req_done(req);
@@ -2999,18 +3016,12 @@ static void cli_full_connection_creds_tcon_start(struct tevent_req *req)
 	}
 
 	password = cli_credentials_get_password(state->creds);
-	if (password == NULL) {
-		password = "";
-		pw_len = 0;
-	} else {
-		pw_len = strlen(password) + 1;
-	}
 
 	subreq = cli_tree_connect_send(state, state->ev,
 				       state->cli,
 				       state->service,
 				       state->service_type,
-				       password, pw_len);
+				       password);
 	if (tevent_req_nomem(subreq, req)) {
 		return;
 	}
diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c
index 86a74ec..b44bbef 100644
--- a/source3/libsmb/clidfs.c
+++ b/source3/libsmb/clidfs.c
@@ -254,8 +254,7 @@ static NTSTATUS do_connect(TALLOC_CTX *ctx,
 
 	/* must be a normal share */
 
-	status = cli_tree_connect(c, sharename, "?????",
-				  password, strlen(password)+1);
+	status = cli_tree_connect(c, sharename, "?????", password);
 	if (!NT_STATUS_IS_OK(status)) {
 		d_printf("tree connect failed: %s\n", nt_errstr(status));
 		cli_shutdown(c);
@@ -1203,7 +1202,7 @@ bool cli_check_msdfs_proxy(TALLOC_CTX *ctx,
 
 	/* check for the referral */
 
-	if (!NT_STATUS_IS_OK(cli_tree_connect(cli, "IPC$", "IPC", NULL, 0))) {
+	if (!NT_STATUS_IS_OK(cli_tree_connect(cli, "IPC$", "IPC", NULL))) {
 		return false;
 	}
 
diff --git a/source3/libsmb/clifsinfo.c b/source3/libsmb/clifsinfo.c
index 31a2c02..ca4dc38 100644
--- a/source3/libsmb/clifsinfo.c
+++ b/source3/libsmb/clifsinfo.c
@@ -642,11 +642,11 @@ NTSTATUS cli_raw_ntlm_smb_encryption_start(struct cli_state *cli,
 
 	if (NT_STATUS_IS_OK(status)) {
 		es->enc_on = true;
-		/* Replace the old state, if any. */
-		/* We only need the gensec_security part from here.
-		 * es is a malloc()ed pointer, so we cannot make
-		 * gensec_security a talloc child */
-		es->gensec_security = talloc_move(NULL,
+		/*
+		 * Replace the old state, if any.
+		 * We only need the gensec_security part from here.
+		 */
+		es->gensec_security = talloc_move(es,
 						  &auth_generic_state->gensec_security);
 		smb1cli_conn_set_encryption(cli->conn, es);
 		es = NULL;
@@ -727,10 +727,10 @@ NTSTATUS cli_gss_smb_encryption_start(struct cli_state *cli)
 
 	if (NT_STATUS_IS_OK(status)) {
 		es->enc_on = true;
-		/* Replace the old state, if any. */
-		/* We only need the gensec_security part from here.
-		 * es is a malloc()ed pointer, so we cannot make
-		 * gensec_security a talloc child */
+		/*
+		 * Replace the old state, if any.
+		 * We only need the gensec_security part from here.
+		 */
 		es->gensec_security = talloc_move(es,
 						  &auth_generic_state->gensec_security);
 		smb1cli_conn_set_encryption(cli->conn, es);
diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c
index 591d646..438b7e6 100644
--- a/source3/libsmb/libsmb_server.c
+++ b/source3/libsmb/libsmb_server.c
@@ -344,8 +344,7 @@ SMBC_server_internal(TALLOC_CTX *ctx,
 			status = cli_tree_connect(srv->cli,
 						  srv->cli->share,
 						  "?????",
-						  *pp_password,
-						  strlen(*pp_password)+1);
+						  *pp_password);
 			if (!NT_STATUS_IS_OK(status)) {
                                 errno = map_errno_from_nt_status(status);
                                 cli_shutdown(srv->cli);
@@ -542,8 +541,7 @@ SMBC_server_internal(TALLOC_CTX *ctx,
 
 	/* must be a normal share */
 
-	status = cli_tree_connect(c, share, "?????", *pp_password,
-				  strlen(*pp_password)+1);
+	status = cli_tree_connect(c, share, "?????", *pp_password);
 	if (!NT_STATUS_IS_OK(status)) {
 		errno = map_errno_from_nt_status(status);
 		cli_shutdown(c);
diff --git a/source3/libsmb/passchange.c b/source3/libsmb/passchange.c
index 927c7ae..c89b7ca 100644
--- a/source3/libsmb/passchange.c
+++ b/source3/libsmb/passchange.c
@@ -58,10 +58,10 @@ NTSTATUS remote_password_change(const char *remote_machine, const char *user_nam
 				       NULL, /* domain */
 				       NULL, /* realm */
 				       old_passwd,
-				       cli->use_kerberos,
-				       cli->fallback_after_kerberos,
-				       cli->use_ccache,
-				       cli->pw_nt_hash);
+				       false, /* use_kerberos */
+				       false, /* fallback_after_kerberos */
+				       false, /* use_ccache */
+				       false); /* password_is_nt_hash */
 	SMB_ASSERT(creds != NULL);
 
 	result = smbXcli_negprot(cli->conn, cli->timeout,
@@ -120,7 +120,7 @@ NTSTATUS remote_password_change(const char *remote_machine, const char *user_nam
 		}
 	}
 
-	result = cli_tree_connect(cli, "IPC$", "IPC", "", 1);
+	result = cli_tree_connect(cli, "IPC$", "IPC", NULL);
 	if (!NT_STATUS_IS_OK(result)) {
 		if (asprintf(err_str, "machine %s rejected the tconX on the "
 			     "IPC$ share. Error was : %s.\n",
diff --git a/source3/libsmb/proto.h b/source3/libsmb/proto.h
index 107579c..e1cd185 100644
--- a/source3/libsmb/proto.h
+++ b/source3/libsmb/proto.h
@@ -78,8 +78,11 @@ struct tevent_req *cli_tcon_andx_send(TALLOC_CTX *mem_ctx,
 NTSTATUS cli_tcon_andx_recv(struct tevent_req *req);
 NTSTATUS cli_tcon_andx(struct cli_state *cli, const char *share,
 		       const char *dev, const char *pass, int passlen);
+NTSTATUS cli_tree_connect_creds(struct cli_state *cli,
+				const char *share, const char *dev,
+				struct cli_credentials *creds);
 NTSTATUS cli_tree_connect(struct cli_state *cli, const char *share,
-			  const char *dev, const char *pass, int passlen);
+			  const char *dev, const char *pass);
 NTSTATUS cli_tdis(struct cli_state *cli);
 NTSTATUS cli_connect_nb(const char *host, const struct sockaddr_storage *dest_ss,
 			uint16_t port, int name_type, const char *myname,
diff --git a/source3/nmbd/nmbd_synclists.c b/source3/nmbd/nmbd_synclists.c
index 1c2b04d..d69d6f9 100644
--- a/source3/nmbd/nmbd_synclists.c
+++ b/source3/nmbd/nmbd_synclists.c
@@ -101,7 +101,7 @@ static void sync_child(char *name, int nm_type,
 		return;
 	}
 
-	if (!NT_STATUS_IS_OK(cli_tree_connect(cli, "IPC$", "IPC", "", 1))) {
+	if (!NT_STATUS_IS_OK(cli_tree_connect(cli, "IPC$", "IPC", NULL))) {
 		cli_shutdown(cli);
 		return;
 	}
diff --git a/source3/torture/test_smb2.c b/source3/torture/test_smb2.c
index 3eee2ac..7819bc2 100644
--- a/source3/torture/test_smb2.c
+++ b/source3/torture/test_smb2.c
@@ -64,7 +64,7 @@ bool run_smb2_basic(int dummy)
 		return false;
 	}
 
-	status = cli_tree_connect(cli, share, "?????", "", 0);
+	status = cli_tree_connect(cli, share, "?????", NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("cli_tree_connect returned %s\n", nt_errstr(status));
 		return false;
@@ -336,7 +336,7 @@ bool run_smb2_session_reconnect(int dummy)
 		return false;
 	}
 
-	status = cli_tree_connect(cli1, share, "?????", "", 0);
+	status = cli_tree_connect(cli1, share, "?????", NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("cli_tree_connect returned %s\n", nt_errstr(status));
 		return false;
@@ -527,7 +527,7 @@ bool run_smb2_session_reconnect(int dummy)
 		return false;
 	}
 
-	status = cli_tree_connect(cli1, share, "?????", "", 0);
+	status = cli_tree_connect(cli1, share, "?????", NULL);
 	if (!NT_STATUS_EQUAL(status, NT_STATUS_USER_SESSION_DELETED)) {
 		printf("cli_tree_connect returned %s\n", nt_errstr(status));
 		return false;
@@ -651,7 +651,7 @@ bool run_smb2_session_reconnect(int dummy)
 
 	/* now do a new tcon and test file calls again */
 
-	status = cli_tree_connect(cli2, share, "?????", "", 0);
+	status = cli_tree_connect(cli2, share, "?????", NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("cli_tree_connect returned %s\n", nt_errstr(status));
 		return false;
@@ -744,7 +744,7 @@ bool run_smb2_tcon_dependence(int dummy)
 		return false;
 	}
 
-	status = cli_tree_connect(cli, share, "?????", "", 0);
+	status = cli_tree_connect(cli, share, "?????", NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("cli_tree_connect returned %s\n", nt_errstr(status));
 		return false;
@@ -896,7 +896,7 @@ bool run_smb2_multi_channel(int dummy)
 		return false;
 	}
 
-	status = cli_tree_connect(cli1, share, "?????", "", 0);
+	status = cli_tree_connect(cli1, share, "?????", NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("cli_tree_connect returned %s\n", nt_errstr(status));
 		return false;
@@ -1453,7 +1453,7 @@ bool run_smb2_session_reauth(int dummy)
 		return false;
 	}
 
-	status = cli_tree_connect(cli, share, "?????", "", 0);
+	status = cli_tree_connect(cli, share, "?????", NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("cli_tree_connect returned %s\n", nt_errstr(status));
 		return false;
@@ -1702,7 +1702,7 @@ bool run_smb2_session_reauth(int dummy)
 				0, /* flags */
 				0, /* capabilities */
 				0  /* maximal_access */);
-	status = cli_tree_connect(cli, share, "?????", "", 0);


-- 
Samba Shared Repository



More information about the samba-cvs mailing list