[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Sat Apr 18 04:13:03 UTC 2020


The branch, master has been updated
       via  092da6ec07a libsmb: Move clirap2.c to utils/
       via  595e3f25661 utils: Convert smbtree to use libsmbclient
       via  9ff5968a7f4 smbtree: Add "fail:" target, more failure paths with follow
       via  aa22ae6b405 libsmb: Slightly simplify get_ipc_connect()
       via  3aaa50b6579 pidl: Align integer types in scompat files
      from  ad4b53f2d95 ctdb: Fix a memleak

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


- Log -----------------------------------------------------------------
commit 092da6ec07a8872557e44c73abbf9e98aaad4271
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Apr 13 20:04:21 2020 +0200

    libsmb: Move clirap2.c to utils/
    
    It's only used in net_rap.c, expansion to other users is
    unlikely. Don't link it into libsmbclient anymore. It saves roughly
    50k from the everywhere-linked libsmb.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Sat Apr 18 04:12:48 UTC 2020 on sn-devel-184

commit 595e3f2566181fe823aa68a20fb99c3ce64724b7
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Apr 11 19:54:11 2020 +0200

    utils: Convert smbtree to use libsmbclient
    
    We have the domain browsing functionality in libsmbclient, don't
    duplicate it in smbtree with special code. Not too much gain in lines
    of code, but the new code is much more regular and reuses
    functionality provided elsewhere.
    
    This removes the "-b" option from smbtree, libsmbclient always does
    that.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 9ff5968a7f4ced23dc50b159545de71d227c47ab
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Apr 11 19:03:39 2020 +0200

    smbtree: Add "fail:" target, more failure paths with follow
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit aa22ae6b4051f8654b12f3a34f6b3df1a4fa74fa
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Apr 13 09:23:45 2020 +0200

    libsmb: Slightly simplify get_ipc_connect()
    
    No else required with an early return
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 3aaa50b657950d56bcacba4334fa432446b2f835
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Apr 11 18:13:52 2020 +0200

    pidl: Align integer types in scompat files
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

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

Summary of changes:
 docs-xml/manpages/smbtree.1.xml                |   8 -
 pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm |   2 +-
 source3/libsmb/cliconnect.c                    |   3 +-
 source3/libsmb/clirap.h                        |  51 ---
 source3/{libsmb => utils}/clirap2.c            |   4 +-
 source3/utils/clirap2.h                        |  80 +++++
 source3/utils/net_rap.c                        |   2 +-
 source3/utils/net_rpc.c                        |   2 +-
 source3/utils/smbtree.c                        | 473 +++++++++----------------
 source3/utils/wscript_build                    |   3 +-
 source3/wscript_build                          |   1 -
 11 files changed, 259 insertions(+), 370 deletions(-)
 rename source3/{libsmb => utils}/clirap2.c (99%)
 create mode 100644 source3/utils/clirap2.h


Changeset truncated at 500 lines:

diff --git a/docs-xml/manpages/smbtree.1.xml b/docs-xml/manpages/smbtree.1.xml
index 85ca75dcd24..242747ce70f 100644
--- a/docs-xml/manpages/smbtree.1.xml
+++ b/docs-xml/manpages/smbtree.1.xml
@@ -20,7 +20,6 @@
 <refsynopsisdiv>
 	<cmdsynopsis>
 		<command>smbtree</command>
-		<arg choice="opt">-b</arg>
 		<arg choice="opt">-D</arg>
 		<arg choice="opt">-S</arg>
 	</cmdsynopsis>
@@ -45,13 +44,6 @@
 	<title>OPTIONS</title>
 
 	<variablelist>
-		<varlistentry>
-		<term>-b|--broadcast</term>
-		<listitem><para>Query network nodes by sending requests 
-		as broadcasts instead of querying the local master browser.
-		</para></listitem>
-		</varlistentry>
-
 		<varlistentry>
 		<term>-D|--domains</term>
 		<listitem><para>Only print a list of all 
diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm
index 14f6ad9a1a0..2c750728892 100644
--- a/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm
@@ -530,7 +530,7 @@ sub boilerplate_ep_server($)
 	$self->pidl("static NTSTATUS $name\__op_init_server(struct dcesrv_context *dce_ctx, const struct dcesrv_endpoint_server *ep_server)");
 	$self->pidl("{");
 	$self->indent();
-	$self->pidl("int i;");
+	$self->pidl("uint32_t i;");
 	$self->pidl("NTSTATUS ret;");
 	$self->pidl("struct dcerpc_binding *binding;");
 	$self->pidl("");
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index b87287fa24d..23b2bd2bdf7 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -3799,7 +3799,8 @@ struct cli_state *get_ipc_connect(char *server,
 
 	if (NT_STATUS_IS_OK(nt_status)) {
 		return cli;
-	} else if (is_ipaddress(server)) {
+	}
+	if (is_ipaddress(server)) {
 	    /* windows 9* needs a correct NMB name for connections */
 	    fstring remote_name;
 
diff --git a/source3/libsmb/clirap.h b/source3/libsmb/clirap.h
index 9a78f5cb005..3c446cf0070 100644
--- a/source3/libsmb/clirap.h
+++ b/source3/libsmb/clirap.h
@@ -169,55 +169,4 @@ NTSTATUS cli_shadow_copy_data(TALLOC_CTX *mem_ctx, struct cli_state *cli,
 			      uint16_t fnum, bool get_names,
 			      char ***pnames, int *pnum_names);
 
-/* The following definitions come from libsmb/clirap2.c  */
-struct rap_group_info_1;
-struct rap_user_info_1;
-struct rap_share_info_2;
-
-int cli_NetGroupDelete(struct cli_state *cli, const char *group_name);
-int cli_NetGroupAdd(struct cli_state *cli, struct rap_group_info_1 *grinfo);
-int cli_RNetGroupEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state);
-int cli_RNetGroupEnum0(struct cli_state *cli,
-		       void (*fn)(const char *, void *),
-		       void *state);
-int cli_NetGroupDelUser(struct cli_state * cli, const char *group_name, const char *user_name);
-int cli_NetGroupAddUser(struct cli_state * cli, const char *group_name, const char *user_name);
-int cli_NetGroupGetUsers(struct cli_state * cli, const char *group_name, void (*fn)(const char *, void *), void *state );
-int cli_NetUserGetGroups(struct cli_state * cli, const char *user_name, void (*fn)(const char *, void *), void *state );
-int cli_NetUserDelete(struct cli_state *cli, const char * user_name );
-int cli_NetUserAdd(struct cli_state *cli, struct rap_user_info_1 * userinfo );
-int cli_RNetUserEnum(struct cli_state *cli, void (*fn)(const char *, const char *, const char *, const char *, void *), void *state);
-int cli_RNetUserEnum0(struct cli_state *cli,
-		      void (*fn)(const char *, void *),
-		      void *state);
-int cli_NetFileClose(struct cli_state *cli, uint32_t file_id );
-int cli_NetFileGetInfo(struct cli_state *cli, uint32_t file_id, void (*fn)(const char *, const char *, uint16_t, uint16_t, uint32_t));
-int cli_NetFileEnum(struct cli_state *cli, const char * user,
-		    const char * base_path,
-		    void (*fn)(const char *, const char *, uint16_t, uint16_t,
-			       uint32_t));
-int cli_NetShareAdd(struct cli_state *cli, struct rap_share_info_2 * sinfo );
-int cli_NetShareDelete(struct cli_state *cli, const char * share_name );
-bool cli_get_pdc_name(struct cli_state *cli, const char *workgroup, char **pdc_name);
-bool cli_get_server_name(TALLOC_CTX *mem_ctx, struct cli_state *cli,
-			 char **servername);
-bool cli_ns_check_server_type(struct cli_state *cli, char *workgroup, uint32_t stype);
-bool cli_NetWkstaUserLogoff(struct cli_state *cli, const char *user, const char *workstation);
-int cli_NetPrintQEnum(struct cli_state *cli,
-		void (*qfn)(const char*,uint16_t,uint16_t,uint16_t,const char*,const char*,const char*,const char*,const char*,uint16_t,uint16_t),
-		void (*jfn)(uint16_t,const char*,const char*,const char*,const char*,uint16_t,uint16_t,const char*,unsigned int,unsigned int,const char*));
-int cli_NetPrintQGetInfo(struct cli_state *cli, const char *printer,
-	void (*qfn)(const char*,uint16_t,uint16_t,uint16_t,const char*,const char*,const char*,const char*,const char*,uint16_t,uint16_t),
-	void (*jfn)(uint16_t,const char*,const char*,const char*,const char*,uint16_t,uint16_t,const char*,unsigned int,unsigned int,const char*));
-int cli_RNetServiceEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state);
-int cli_NetSessionEnum(struct cli_state *cli, void (*fn)(char *, char *, uint16_t, uint16_t, uint16_t, unsigned int, unsigned int, unsigned int, char *));
-int cli_NetSessionGetInfo(struct cli_state *cli, const char *workstation,
-		void (*fn)(const char *, const char *, uint16_t, uint16_t, uint16_t, unsigned int, unsigned int, unsigned int, const char *));
-int cli_NetSessionDel(struct cli_state *cli, const char *workstation);
-int cli_NetConnectionEnum(struct cli_state *cli, const char *qualifier,
-			void (*fn)(uint16_t conid, uint16_t contype,
-				uint16_t numopens, uint16_t numusers,
-				uint32_t contime, const char *username,
-				const char *netname));
-
 #endif /* _LIBSMB_CLIRAP_H */
diff --git a/source3/libsmb/clirap2.c b/source3/utils/clirap2.c
similarity index 99%
rename from source3/libsmb/clirap2.c
rename to source3/utils/clirap2.c
index fdff34fcf64..5607f7a4114 100644
--- a/source3/libsmb/clirap2.c
+++ b/source3/utils/clirap2.c
@@ -79,7 +79,7 @@
 #include "libsmb/libsmb.h"
 #include "../librpc/gen_ndr/rap.h"
 #include "../librpc/gen_ndr/svcctl.h"
-#include "libsmb/clirap.h"
+#include "clirap2.h"
 #include "../libcli/smb/smbXcli_base.h"
 
 #define WORDSIZE 2
@@ -183,7 +183,7 @@ static size_t rap_getstringf(char *src, char *dest, size_t l, size_t dlen, char
 		len = l;
 	}
 	if (len) {
-	 	pull_ascii(dest,src,len,len,STR_ASCII);
+		pull_ascii(dest,src,len,len,STR_ASCII);
 	}
 	return l;
 }
diff --git a/source3/utils/clirap2.h b/source3/utils/clirap2.h
new file mode 100644
index 00000000000..275d491d2cd
--- /dev/null
+++ b/source3/utils/clirap2.h
@@ -0,0 +1,80 @@
+/*
+   Samba Unix/Linux SMB client library
+   More client RAP (SMB Remote Procedure Calls) functions
+   Copyright (C) 2001 Steve French (sfrench at us.ibm.com)
+   Copyright (C) 2001 Jim McDonough (jmcd at us.ibm.com)
+   Copyright (C) 2007 Jeremy Allison. jra at samba.org
+   Copyright (C) Andrew Tridgell         1994-1998
+   Copyright (C) Gerald (Jerry) Carter   2004
+   Copyright (C) James Peach		 2007
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __UTILS_CLIRAP2_H__
+#define __UTILS_CLIRAP2_H__
+
+#include "../libsmb/clirap.h"
+
+struct rap_group_info_1;
+struct rap_user_info_1;
+struct rap_share_info_2;
+
+int cli_NetGroupDelete(struct cli_state *cli, const char *group_name);
+int cli_NetGroupAdd(struct cli_state *cli, struct rap_group_info_1 *grinfo);
+int cli_RNetGroupEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state);
+int cli_RNetGroupEnum0(struct cli_state *cli,
+		       void (*fn)(const char *, void *),
+		       void *state);
+int cli_NetGroupDelUser(struct cli_state * cli, const char *group_name, const char *user_name);
+int cli_NetGroupAddUser(struct cli_state * cli, const char *group_name, const char *user_name);
+int cli_NetGroupGetUsers(struct cli_state * cli, const char *group_name, void (*fn)(const char *, void *), void *state );
+int cli_NetUserGetGroups(struct cli_state * cli, const char *user_name, void (*fn)(const char *, void *), void *state );
+int cli_NetUserDelete(struct cli_state *cli, const char * user_name );
+int cli_NetUserAdd(struct cli_state *cli, struct rap_user_info_1 * userinfo );
+int cli_RNetUserEnum(struct cli_state *cli, void (*fn)(const char *, const char *, const char *, const char *, void *), void *state);
+int cli_RNetUserEnum0(struct cli_state *cli,
+		      void (*fn)(const char *, void *),
+		      void *state);
+int cli_NetFileClose(struct cli_state *cli, uint32_t file_id );
+int cli_NetFileGetInfo(struct cli_state *cli, uint32_t file_id, void (*fn)(const char *, const char *, uint16_t, uint16_t, uint32_t));
+int cli_NetFileEnum(struct cli_state *cli, const char * user,
+		    const char * base_path,
+		    void (*fn)(const char *, const char *, uint16_t, uint16_t,
+			       uint32_t));
+int cli_NetShareAdd(struct cli_state *cli, struct rap_share_info_2 * sinfo );
+int cli_NetShareDelete(struct cli_state *cli, const char * share_name );
+bool cli_get_pdc_name(struct cli_state *cli, const char *workgroup, char **pdc_name);
+bool cli_get_server_name(TALLOC_CTX *mem_ctx, struct cli_state *cli,
+			 char **servername);
+bool cli_ns_check_server_type(struct cli_state *cli, char *workgroup, uint32_t stype);
+bool cli_NetWkstaUserLogoff(struct cli_state *cli, const char *user, const char *workstation);
+int cli_NetPrintQEnum(struct cli_state *cli,
+		void (*qfn)(const char*,uint16_t,uint16_t,uint16_t,const char*,const char*,const char*,const char*,const char*,uint16_t,uint16_t),
+		void (*jfn)(uint16_t,const char*,const char*,const char*,const char*,uint16_t,uint16_t,const char*,unsigned int,unsigned int,const char*));
+int cli_NetPrintQGetInfo(struct cli_state *cli, const char *printer,
+	void (*qfn)(const char*,uint16_t,uint16_t,uint16_t,const char*,const char*,const char*,const char*,const char*,uint16_t,uint16_t),
+	void (*jfn)(uint16_t,const char*,const char*,const char*,const char*,uint16_t,uint16_t,const char*,unsigned int,unsigned int,const char*));
+int cli_RNetServiceEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state);
+int cli_NetSessionEnum(struct cli_state *cli, void (*fn)(char *, char *, uint16_t, uint16_t, uint16_t, unsigned int, unsigned int, unsigned int, char *));
+int cli_NetSessionGetInfo(struct cli_state *cli, const char *workstation,
+		void (*fn)(const char *, const char *, uint16_t, uint16_t, uint16_t, unsigned int, unsigned int, unsigned int, const char *));
+int cli_NetSessionDel(struct cli_state *cli, const char *workstation);
+int cli_NetConnectionEnum(struct cli_state *cli, const char *qualifier,
+			void (*fn)(uint16_t conid, uint16_t contype,
+				uint16_t numopens, uint16_t numusers,
+				uint32_t contime, const char *username,
+				const char *netname));
+
+#endif /* __UTILS_CLIRAP2_H__ */
diff --git a/source3/utils/net_rap.c b/source3/utils/net_rap.c
index 96703e438ca..8f74604cb4a 100644
--- a/source3/utils/net_rap.c
+++ b/source3/utils/net_rap.c
@@ -27,7 +27,7 @@
 #include "../librpc/gen_ndr/svcctl.h"
 #include "utils/net.h"
 #include "libsmb/libsmb.h"
-#include "libsmb/clirap.h"
+#include "clirap2.h"
 #include "../libcli/smb/smbXcli_base.h"
 
 /* The following messages were for error checking that is not properly
diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c
index e4cf7ef05f5..31babc0a755 100644
--- a/source3/utils/net_rpc.c
+++ b/source3/utils/net_rpc.c
@@ -43,7 +43,7 @@
 #include "rpc_client/init_lsa.h"
 #include "../libcli/security/security.h"
 #include "libsmb/libsmb.h"
-#include "libsmb/clirap.h"
+#include "clirap2.h"
 #include "nsswitch/libwbclient/wbclient.h"
 #include "passdb.h"
 #include "../libcli/smb/smbXcli_base.h"
diff --git a/source3/utils/smbtree.c b/source3/utils/smbtree.c
index e352bccb04d..8fda19f800b 100644
--- a/source3/utils/smbtree.c
+++ b/source3/utils/smbtree.c
@@ -28,309 +28,46 @@
 #include "libsmb/clirap.h"
 #include "../libcli/smb/smbXcli_base.h"
 #include "nameserv.h"
-
-static int use_bcast;
+#include "libsmbclient.h"
 
 /* How low can we go? */
 
 enum tree_level {LEV_WORKGROUP, LEV_SERVER, LEV_SHARE};
 static enum tree_level level = LEV_SHARE;
 
-/* Holds a list of workgroups or servers */
-
-struct smb_name_list {
-        struct smb_name_list *prev, *next;
-        char *name, *comment;
-        uint32_t server_type;
-};
-
-static struct smb_name_list *workgroups, *servers, *shares;
-
-static void free_name_list(struct smb_name_list *list)
+static void get_auth_data_with_context_fn(
+	SMBCCTX *context,
+	const char *server,
+	const char *share,
+	char *domain,
+	int domain_len,
+	char *user,
+	int user_len,
+	char *password,
+	int password_len)
 {
-        while(list)
-                DLIST_REMOVE(list, list);
-}
-
-static void add_name(const char *machine_name, uint32_t server_type,
-                     const char *comment, void *state)
-{
-        struct smb_name_list **name_list = (struct smb_name_list **)state;
-        struct smb_name_list *new_name;
-
-        new_name = SMB_MALLOC_P(struct smb_name_list);
+	struct user_auth_info *auth = popt_get_cmdline_auth_info();
+	size_t len;
 
-        if (!new_name)
-                return;
-
-        ZERO_STRUCTP(new_name);
-
-	new_name->name = SMB_STRDUP(machine_name);
-	new_name->comment = SMB_STRDUP(comment);
-        new_name->server_type = server_type;
-
-	if (!new_name->name || !new_name->comment) {
-		SAFE_FREE(new_name->name);
-		SAFE_FREE(new_name->comment);
-		SAFE_FREE(new_name);
+	if (auth == NULL) {
 		return;
 	}
 
-        DLIST_ADD(*name_list, new_name);
-}
-
-/*
- * Return the IP address and workgroup of a master browser on the network, and
- * connect to it.
- */
-
-static struct cli_state *get_ipc_connect_master_ip_bcast(
-	TALLOC_CTX *ctx,
-	const struct user_auth_info *user_info,
-	char **pp_workgroup_out)
-{
-	struct sockaddr_storage *ip_list;
-	struct cli_state *cli;
-	int i, count;
-	NTSTATUS status;
-
-	*pp_workgroup_out = NULL;
-
-        DEBUG(99, ("Do broadcast lookup for workgroups on local network\n"));
-
-        /* Go looking for workgroups by broadcasting on the local network */
-
-	status = name_resolve_bcast(
-		MSBROWSE, 1, talloc_tos(), &ip_list, &count);
-        if (!NT_STATUS_IS_OK(status)) {
-                DEBUG(99, ("No master browsers responded: %s\n",
-			   nt_errstr(status)));
-                return NULL;
-        }
-
-	for (i = 0; i < count; i++) {
-		char addr[INET6_ADDRSTRLEN];
-		print_sockaddr(addr, sizeof(addr), &ip_list[i]);
-		DEBUG(99, ("Found master browser %s\n", addr));
-
-		cli = get_ipc_connect_master_ip(
-			ctx, &ip_list[i], user_info, pp_workgroup_out);
-		if (cli != NULL) {
-			return(cli);
-		}
-	}
-
-	return NULL;
-}
-
-/****************************************************************************
-  display tree of smb workgroups, servers and shares
-****************************************************************************/
-static bool get_workgroups(const struct user_auth_info *user_info)
-{
-        struct cli_state *cli;
-        struct sockaddr_storage server_ss;
-	TALLOC_CTX *ctx = talloc_tos();
-	char *master_workgroup = NULL;
-
-        /* Try to connect to a #1d name of our current workgroup.  If that
-           doesn't work broadcast for a master browser and then jump off
-           that workgroup. */
-
-	master_workgroup = talloc_strdup(ctx, lp_workgroup());
-	if (!master_workgroup) {
-		return false;
-	}
-
-	if (!use_bcast && !find_master_ip(lp_workgroup(), &server_ss)) {
-		DEBUG(4,("Unable to find master browser for workgroup %s, "
-			 "falling back to broadcast\n",
-			 master_workgroup));
-		use_bcast = true;
-	}
-
-	if (!use_bcast) {
-		char addr[INET6_ADDRSTRLEN];
-
-		print_sockaddr(addr, sizeof(addr), &server_ss);
-
-		cli = get_ipc_connect(addr, &server_ss, user_info);
-		if (cli == NULL) {
-			return false;
-		}
-	} else {
-		cli = get_ipc_connect_master_ip_bcast(talloc_tos(),
-						      user_info,
-						      &master_workgroup);
-		if (cli == NULL) {
-			DEBUG(4, ("Unable to find master browser by "
-				  "broadcast\n"));
-			return false;
-		}
-	}
-
-        if (!cli_NetServerEnum(cli, master_workgroup,
-                               SV_TYPE_DOMAIN_ENUM, add_name, &workgroups))
-                return False;
-
-        return True;
-}
-
-/* Retrieve the list of servers for a given workgroup */
-
-static bool get_servers(char *workgroup, const struct user_auth_info *user_info)
-{
-        struct cli_state *cli;
-        struct sockaddr_storage server_ss;
-	char addr[INET6_ADDRSTRLEN];
-
-        /* Open an IPC$ connection to the master browser for the workgroup */
-
-        if (!find_master_ip(workgroup, &server_ss)) {
-                DEBUG(4, ("Cannot find master browser for workgroup %s\n",
-                          workgroup));
-                return False;
-        }
-
-	print_sockaddr(addr, sizeof(addr), &server_ss);
-        if (!(cli = get_ipc_connect(addr, &server_ss, user_info)))
-                return False;
-
-        if (!cli_NetServerEnum(cli, workgroup, SV_TYPE_ALL, add_name,
-                               &servers))
-                return False;
-
-        return True;
-}
-
-static bool get_rpc_shares(struct cli_state *cli,
-			   void (*fn)(const char *, uint32_t, const char *, void *),
-			   void *state)
-{
-	NTSTATUS status;
-	struct rpc_pipe_client *pipe_hnd = NULL;
-	TALLOC_CTX *mem_ctx;
-	WERROR werr;
-	struct srvsvc_NetShareInfoCtr info_ctr;
-	struct srvsvc_NetShareCtr1 ctr1;
-	uint32_t i;
-	uint32_t resume_handle = 0;
-	uint32_t total_entries = 0;
-	struct dcerpc_binding_handle *b;
-
-	mem_ctx = talloc_new(NULL);
-	if (mem_ctx == NULL) {
-		DEBUG(0, ("talloc_new failed\n"));
-		return False;
-	}
-
-	status = cli_rpc_pipe_open_noauth(cli, &ndr_table_srvsvc,
-					  &pipe_hnd);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(10, ("Could not connect to srvsvc pipe: %s\n",
-			   nt_errstr(status)));
-		TALLOC_FREE(mem_ctx);
-		return False;
-	}
-
-	b = pipe_hnd->binding_handle;
-
-	ZERO_STRUCT(info_ctr);
-	ZERO_STRUCT(ctr1);
-
-	info_ctr.level = 1;
-	info_ctr.ctr.ctr1 = &ctr1;
-
-	status = dcerpc_srvsvc_NetShareEnumAll(b, mem_ctx,
-					       pipe_hnd->desthost,
-					       &info_ctr,
-					       0xffffffff,
-					       &total_entries,
-					       &resume_handle,
-					       &werr);
-
-	if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(werr)) {
-		TALLOC_FREE(mem_ctx);
-		TALLOC_FREE(pipe_hnd);
-		return False;
+	len = strlcpy(domain, get_cmdline_auth_info_domain(auth), domain_len);
+	if ((int)len >= domain_len) {


-- 
Samba Shared Repository



More information about the samba-cvs mailing list