[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Sun Jul 3 15:58:02 MDT 2011


The branch, master has been updated
       via  8083849 s3: Make cli_cm_open return NTSTATUS
       via  714e101 s3: Make cli_cm_connect return NTSTATUS
       via  7ca63fb s3: Make "do_connect" return NTSTATUS
       via  3414182 s3: Remove a use of cli_errstr
       via  4569a3a s3: Remove a use of cli_errstr
       via  8238d89 s3: Remove a use of cli_errstr
       via  cfbd339 s3: Remove a use of cli_errstr
      from  e5ad524 s3: Remove two uses of cli_errstr

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


- Log -----------------------------------------------------------------
commit 80838491e6ac9f4299daccfc5506b3e1e79fab38
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jul 3 19:59:37 2011 +0200

    s3: Make cli_cm_open return NTSTATUS
    
    Autobuild-User: Volker Lendecke <vlendec at samba.org>
    Autobuild-Date: Sun Jul  3 23:57:53 CEST 2011 on sn-devel-104

commit 714e1014c59979d9a7a7c12f21185fdf7bcab818
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jul 3 12:12:45 2011 +0200

    s3: Make cli_cm_connect return NTSTATUS

commit 7ca63fb8fe17ccbfa5400c2b6d465a21096cb8fc
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jul 3 12:08:54 2011 +0200

    s3: Make "do_connect" return NTSTATUS

commit 3414182af0ae2dcd8ebaa93cccfd62602e9863d1
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jul 3 12:04:24 2011 +0200

    s3: Remove a use of cli_errstr

commit 4569a3a75a047d2e4b84d681d8478640ad89d48d
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jul 3 11:49:07 2011 +0200

    s3: Remove a use of cli_errstr

commit 8238d89823ba9205546ea0538f1d6b844b3ba829
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jul 3 11:47:44 2011 +0200

    s3: Remove a use of cli_errstr

commit cfbd339b4a9e11f781755581efbe51d99dc997b6
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jul 3 11:46:50 2011 +0200

    s3: Remove a use of cli_errstr

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

Summary of changes:
 source3/client/client.c       |   62 +++++++++++-------
 source3/lib/netapi/cm.c       |   17 +++--
 source3/libsmb/clidfs.c       |  139 +++++++++++++++++++++++------------------
 source3/libsmb/libsmb_xattr.c |   28 +++++---
 source3/libsmb/proto.h        |    5 +-
 5 files changed, 148 insertions(+), 103 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/client/client.c b/source3/client/client.c
index 94c7e98..bc653d5 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -4466,12 +4466,15 @@ static int process_command_string(const char *cmd_in)
 	/* establish the connection if not already */
 
 	if (!cli) {
-		cli = cli_cm_open(talloc_tos(), NULL,
-				have_ip ? dest_ss_str : desthost,
-				service, auth_info,
-				true, smb_encrypt,
-				max_protocol, port, name_type);
-		if (!cli) {
+		NTSTATUS status;
+
+		status = cli_cm_open(talloc_tos(), NULL,
+				     have_ip ? dest_ss_str : desthost,
+				     service, auth_info,
+				     true, smb_encrypt,
+				     max_protocol, port, name_type,
+				     &cli);
+		if (!NT_STATUS_IS_OK(status)) {
 			return 1;
 		}
 	}
@@ -4938,12 +4941,13 @@ static int process_stdin(void)
 static int process(const char *base_directory)
 {
 	int rc = 0;
+	NTSTATUS status;
 
-	cli = cli_cm_open(talloc_tos(), NULL,
-			have_ip ? dest_ss_str : desthost,
-			service, auth_info, true, smb_encrypt,
-			max_protocol, port, name_type);
-	if (!cli) {
+	status = cli_cm_open(talloc_tos(), NULL,
+			     have_ip ? dest_ss_str : desthost,
+			     service, auth_info, true, smb_encrypt,
+			     max_protocol, port, name_type, &cli);
+	if (!NT_STATUS_IS_OK(status)) {
 		return 1;
 	}
 
@@ -4971,11 +4975,15 @@ static int process(const char *base_directory)
 
 static int do_host_query(const char *query_host)
 {
-	cli = cli_cm_open(talloc_tos(), NULL,
-			have_ip ? dest_ss_str : query_host, "IPC$", auth_info, true, smb_encrypt,
-			max_protocol, port, name_type);
-	if (!cli)
+	NTSTATUS status;
+
+	status = cli_cm_open(talloc_tos(), NULL,
+			     have_ip ? dest_ss_str : query_host,
+			     "IPC$", auth_info, true, smb_encrypt,
+			     max_protocol, port, name_type, &cli);
+	if (!NT_STATUS_IS_OK(status)) {
 		return 1;
+	}
 
 	browse_host(true);
 
@@ -4997,10 +5005,13 @@ static int do_host_query(const char *query_host)
 		   else but port 139... */
 
 		cli_shutdown(cli);
-		cli = cli_cm_open(talloc_tos(), NULL,
-				have_ip ? dest_ss_str : query_host, "IPC$",
-				auth_info, true, smb_encrypt,
-				max_protocol, 139, name_type);
+		status = cli_cm_open(talloc_tos(), NULL,
+				     have_ip ? dest_ss_str : query_host,
+				     "IPC$", auth_info, true, smb_encrypt,
+				     max_protocol, 139, name_type, &cli);
+		if (!NT_STATUS_IS_OK(status)) {
+			cli = NULL;
+		}
 	}
 
 	if (cli == NULL) {
@@ -5025,12 +5036,15 @@ static int do_tar_op(const char *base_directory)
 
 	/* do we already have a connection? */
 	if (!cli) {
-		cli = cli_cm_open(talloc_tos(), NULL,
-			have_ip ? dest_ss_str : desthost,
-			service, auth_info, true, smb_encrypt,
-			max_protocol, port, name_type);
-		if (!cli)
+		NTSTATUS status;
+
+		status = cli_cm_open(talloc_tos(), NULL,
+				     have_ip ? dest_ss_str : desthost,
+				     service, auth_info, true, smb_encrypt,
+				     max_protocol, port, name_type, &cli);
+		if (!NT_STATUS_IS_OK(status)) {
 			return 1;
+		}
 	}
 
 	recurse=true;
diff --git a/source3/lib/netapi/cm.c b/source3/lib/netapi/cm.c
index 47ccf8b..d41a5ca 100644
--- a/source3/lib/netapi/cm.c
+++ b/source3/lib/netapi/cm.c
@@ -67,6 +67,7 @@ static WERROR libnetapi_open_ipc_connection(struct libnetapi_ctx *ctx,
 	struct user_auth_info *auth_info = NULL;
 	struct cli_state *cli_ipc = NULL;
 	struct client_ipc_connection *p;
+	NTSTATUS status;
 
 	if (!ctx || !pp || !server_name) {
 		return WERR_INVALID_PARAM;
@@ -103,16 +104,18 @@ static WERROR libnetapi_open_ipc_connection(struct libnetapi_ctx *ctx,
 		set_cmdline_auth_info_use_ccache(auth_info, true);
 	}
 
-	cli_ipc = cli_cm_open(ctx, NULL,
-				server_name, "IPC$",
-				auth_info,
-				false, false,
-				PROTOCOL_NT1,
-				0, 0x20);
-	if (cli_ipc) {
+	status = cli_cm_open(ctx, NULL,
+			     server_name, "IPC$",
+			     auth_info,
+			     false, false,
+			     PROTOCOL_NT1,
+			     0, 0x20, &cli_ipc);
+	if (NT_STATUS_IS_OK(status)) {
 		cli_set_username(cli_ipc, ctx->username);
 		cli_set_password(cli_ipc, ctx->password);
 		cli_set_domain(cli_ipc, ctx->workgroup);
+	} else {
+		cli_ipc = NULL;
 	}
 	TALLOC_FREE(auth_info);
 
diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c
index 5c5257f..bb08b22 100644
--- a/source3/libsmb/clidfs.c
+++ b/source3/libsmb/clidfs.c
@@ -77,7 +77,7 @@ NTSTATUS cli_cm_force_encryption(struct cli_state *c,
  Return a connection to a server.
 ********************************************************************/
 
-static struct cli_state *do_connect(TALLOC_CTX *ctx,
+static NTSTATUS do_connect(TALLOC_CTX *ctx,
 					const char *server,
 					const char *share,
 					const struct user_auth_info *auth_info,
@@ -85,7 +85,8 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 					bool force_encrypt,
 					int max_protocol,
 					int port,
-					int name_type)
+					int name_type,
+					struct cli_state **pcli)
 {
 	struct cli_state *c = NULL;
 	char *servicename;
@@ -98,7 +99,7 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 	/* make a copy so we don't modify the global string 'service' */
 	servicename = talloc_strdup(ctx,share);
 	if (!servicename) {
-		return NULL;
+		return NT_STATUS_NO_MEMORY;
 	}
 	sharename = servicename;
 	if (*sharename == '\\') {
@@ -108,13 +109,13 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 		}
 		sharename = strchr_m(sharename,'\\');
 		if (!sharename) {
-			return NULL;
+			return NT_STATUS_NO_MEMORY;
 		}
 		*sharename = 0;
 		sharename++;
 	}
 	if (server == NULL) {
-		return NULL;
+		return NT_STATUS_INVALID_PARAMETER;
 	}
 
 	status = cli_connect_nb(
@@ -125,7 +126,7 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 		d_printf("Connection to %s failed (Error %s)\n",
 				server,
 				nt_errstr(status));
-		return NULL;
+		return status;
 	}
 
 	if (max_protocol == 0) {
@@ -145,30 +146,32 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 		d_printf("protocol negotiation failed: %s\n",
 			 nt_errstr(status));
 		cli_shutdown(c);
-		return NULL;
+		return status;
 	}
 
 	username = get_cmdline_auth_info_username(auth_info);
 	password = get_cmdline_auth_info_password(auth_info);
 
-	if (!NT_STATUS_IS_OK(cli_session_setup(c, username,
-					       password, strlen(password),
-					       password, strlen(password),
-					       lp_workgroup()))) {
+	status = cli_session_setup(c, username,
+				   password, strlen(password),
+				   password, strlen(password),
+				   lp_workgroup());
+	if (!NT_STATUS_IS_OK(status)) {
 		/* If a password was not supplied then
 		 * try again with a null username. */
 		if (password[0] || !username[0] ||
 			get_cmdline_auth_info_use_kerberos(auth_info) ||
-			!NT_STATUS_IS_OK(cli_session_setup(c, "",
+			!NT_STATUS_IS_OK(status = cli_session_setup(c, "",
 				    		"", 0,
 						"", 0,
 					       lp_workgroup()))) {
-			d_printf("session setup failed: %s\n", cli_errstr(c));
+			d_printf("session setup failed: %s\n",
+				 nt_errstr(status));
 			if (NT_STATUS_V(cli_nt_error(c)) ==
 			    NT_STATUS_V(NT_STATUS_MORE_PROCESSING_REQUIRED))
 				d_printf("did you forget to run kinit?\n");
 			cli_shutdown(c);
-			return NULL;
+			return status;
 		}
 		d_printf("Anonymous login successful\n");
 		status = cli_init_creds(c, "", lp_workgroup(), "");
@@ -179,7 +182,7 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(10,("cli_init_creds() failed: %s\n", nt_errstr(status)));
 		cli_shutdown(c);
-		return NULL;
+		return status;
 	}
 
 	if ( show_sessetup ) {
@@ -209,7 +212,7 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 		return do_connect(ctx, newserver,
 				newshare, auth_info, false,
 				force_encrypt, max_protocol,
-				port, name_type);
+				port, name_type, pcli);
 	}
 
 	/* must be a normal share */
@@ -219,7 +222,7 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 	if (!NT_STATUS_IS_OK(status)) {
 		d_printf("tree connect failed: %s\n", nt_errstr(status));
 		cli_shutdown(c);
-		return NULL;
+		return status;
 	}
 
 	if (force_encrypt) {
@@ -230,12 +233,13 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 					sharename);
 		if (!NT_STATUS_IS_OK(status)) {
 			cli_shutdown(c);
-			return NULL;
+			return status;
 		}
 	}
 
 	DEBUG(4,(" tconx ok\n"));
-	return c;
+	*pcli = c;
+	return NT_STATUS_OK;
 }
 
 /****************************************************************************
@@ -257,26 +261,28 @@ static void cli_set_mntpoint(struct cli_state *cli, const char *mnt)
  referring_cli == NULL means a new initial connection.
 ********************************************************************/
 
-static struct cli_state *cli_cm_connect(TALLOC_CTX *ctx,
-					struct cli_state *referring_cli,
-	 				const char *server,
-					const char *share,
-					const struct user_auth_info *auth_info,
-					bool show_hdr,
-					bool force_encrypt,
-					int max_protocol,
-					int port,
-					int name_type)
+static NTSTATUS cli_cm_connect(TALLOC_CTX *ctx,
+			       struct cli_state *referring_cli,
+			       const char *server,
+			       const char *share,
+			       const struct user_auth_info *auth_info,
+			       bool show_hdr,
+			       bool force_encrypt,
+			       int max_protocol,
+			       int port,
+			       int name_type,
+			       struct cli_state **pcli)
 {
 	struct cli_state *cli;
+	NTSTATUS status;
 
-	cli = do_connect(ctx, server, share,
+	status = do_connect(ctx, server, share,
 				auth_info,
 				show_hdr, force_encrypt, max_protocol,
-				port, name_type);
+				port, name_type, &cli);
 
-	if (!cli ) {
-		return NULL;
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
 	}
 
 	/* Enter into the list. */
@@ -287,7 +293,6 @@ static struct cli_state *cli_cm_connect(TALLOC_CTX *ctx,
 	if (referring_cli && referring_cli->requested_posix_capabilities) {
 		uint16 major, minor;
 		uint32 caplow, caphigh;
-		NTSTATUS status;
 		status = cli_unix_extensions_version(cli, &major, &minor,
 						     &caplow, &caphigh);
 		if (NT_STATUS_IS_OK(status)) {
@@ -297,7 +302,8 @@ static struct cli_state *cli_cm_connect(TALLOC_CTX *ctx,
 		}
 	}
 
-	return cli;
+	*pcli = cli;
+	return NT_STATUS_OK;
 }
 
 /********************************************************************
@@ -337,7 +343,7 @@ static struct cli_state *cli_cm_find(struct cli_state *cli,
  Open a client connection to a \\server\share.
 ****************************************************************************/
 
-struct cli_state *cli_cm_open(TALLOC_CTX *ctx,
+NTSTATUS cli_cm_open(TALLOC_CTX *ctx,
 				struct cli_state *referring_cli,
 				const char *server,
 				const char *share,
@@ -346,13 +352,16 @@ struct cli_state *cli_cm_open(TALLOC_CTX *ctx,
 				bool force_encrypt,
 				int max_protocol,
 				int port,
-				int name_type)
+				int name_type,
+				struct cli_state **pcli)
 {
 	/* Try to reuse an existing connection in this list. */
 	struct cli_state *c = cli_cm_find(referring_cli, server, share);
+	NTSTATUS status;
 
 	if (c) {
-		return c;
+		*pcli = c;
+		return NT_STATUS_OK;
 	}
 
 	if (auth_info == NULL) {
@@ -361,10 +370,10 @@ struct cli_state *cli_cm_open(TALLOC_CTX *ctx,
 		d_printf("cli_cm_open() Unable to open connection [\\%s\\%s] "
 			"without auth info\n",
 			server, share );
-		return NULL;
+		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	return cli_cm_connect(ctx,
+	status = cli_cm_connect(ctx,
 				referring_cli,
 				server,
 				share,
@@ -373,7 +382,13 @@ struct cli_state *cli_cm_open(TALLOC_CTX *ctx,
 				force_encrypt,
 				max_protocol,
 				port,
-				name_type);
+				name_type,
+				&c);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+	*pcli = c;
+	return NT_STATUS_OK;
 }
 
 /****************************************************************************
@@ -817,16 +832,18 @@ bool cli_resolve_path(TALLOC_CTX *ctx,
 
 	/* Check for the referral. */
 
-	if (!(cli_ipc = cli_cm_open(ctx,
-				rootcli,
-				rootcli->desthost,
-				"IPC$",
-				dfs_auth_info,
-				false,
-				(rootcli->trans_enc_state != NULL),
-				rootcli->protocol,
-				0,
-				0x20))) {
+	status = cli_cm_open(ctx,
+			     rootcli,
+			     rootcli->desthost,
+			     "IPC$",
+			     dfs_auth_info,
+			     false,
+			     (rootcli->trans_enc_state != NULL),
+			     rootcli->protocol,
+			     0,
+			     0x20,
+			     &cli_ipc);
+	if (!NT_STATUS_IS_OK(status)) {
 		return false;
 	}
 
@@ -867,15 +884,17 @@ bool cli_resolve_path(TALLOC_CTX *ctx,
  	 */
 
 	/* Open the connection to the target server & share */
-	if ((*targetcli = cli_cm_open(ctx, rootcli,
-					server,
-					share,
-					dfs_auth_info,
-					false,
-					(rootcli->trans_enc_state != NULL),
-					rootcli->protocol,
-					0,
-					0x20)) == NULL) {
+	status = cli_cm_open(ctx, rootcli,
+			     server,
+			     share,
+			     dfs_auth_info,
+			     false,
+			     (rootcli->trans_enc_state != NULL),
+			     rootcli->protocol,
+			     0,
+			     0x20,
+			     targetcli);
+	if (!NT_STATUS_IS_OK(status)) {
 		d_printf("Unable to follow dfs referral [\\%s\\%s]\n",
 			server, share );
 		return false;
diff --git a/source3/libsmb/libsmb_xattr.c b/source3/libsmb/libsmb_xattr.c
index eeff9a9..7695dfb 100644
--- a/source3/libsmb/libsmb_xattr.c
+++ b/source3/libsmb/libsmb_xattr.c
@@ -884,6 +884,7 @@ cacl_get(SMBCCTX *context,
         if (ipc_cli && (all || some_nt || all_nt_acls)) {
 		char *targetpath = NULL;
 	        struct cli_state *targetcli = NULL;
+		NTSTATUS status;
 
                 /* Point to the portion after "system.nt_sec_desc." */
                 name += 19;     /* if (all) this will be invalid but unused */
@@ -898,10 +899,13 @@ cacl_get(SMBCCTX *context,
 		}
 
                 /* ... then obtain any NT attributes which were requested */
-                if (!NT_STATUS_IS_OK(cli_ntcreate(targetcli, targetpath, 0, CREATE_ACCESS_READ, 0,
-				FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, 0x0, 0x0, &fnum))) {
+		status = cli_ntcreate(targetcli, targetpath, 0,
+				      CREATE_ACCESS_READ, 0,
+				      FILE_SHARE_READ|FILE_SHARE_WRITE,
+				      FILE_OPEN, 0x0, 0x0, &fnum);
+		if (!NT_STATUS_IS_OK(status)) {
 			DEBUG(5, ("cacl_get failed to open %s: %s\n",
-				targetpath, cli_errstr(targetcli)));
+				  targetpath, nt_errstr(status)));
 			errno = 0;
 			return -1;
 		}
@@ -1555,10 +1559,12 @@ cacl_set(SMBCCTX *context,
 	/* The desired access below is the only one I could find that works
 	   with NT4, W2KP and Samba */
 
-	if (!NT_STATUS_IS_OK(cli_ntcreate(targetcli, targetpath, 0, CREATE_ACCESS_READ, 0,
-				FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, 0x0, 0x0, &fnum))) {
+	status = cli_ntcreate(targetcli, targetpath, 0, CREATE_ACCESS_READ, 0,
+			      FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN,
+			      0x0, 0x0, &fnum);
+	if (!NT_STATUS_IS_OK(status)) {
                 DEBUG(5, ("cacl_set failed to open %s: %s\n",
-                          targetpath, cli_errstr(targetcli)));
+                          targetpath, nt_errstr(status)));
                 errno = 0;
 		return -1;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list