[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Tue Aug 7 09:17:03 MDT 2012


The branch, master has been updated
       via  d825adf s3-param: Remove never-reached condition for popts == NULL
       via  31d1fde s3-param: Remove never-reached condition for opt_list == NULL
       via  d65bded source3/loadparm.c: Move string_set/string_free inside.
       via  3bb65aa source3/smbd/conn.c: wean off string_set/string_free
       via  a14c02d source3/loadparm: make struct loadparm_service a talloc object.
       via  592e3f4 loadparm: Add ctx member to struct loadparm_global.
      from  9b7b736 media_harmony VFS module: Add and build by default.

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


- Log -----------------------------------------------------------------
commit d825adf86a91aa08588ef5fa95ce3f91abb9fd40
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue Aug 7 21:29:53 2012 +1000

    s3-param: Remove never-reached condition for popts == NULL
    
    All the callers provide a parametric options pointer to fill in.
    
    Andrew Bartlett
    
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Tue Aug  7 17:16:38 CEST 2012 on sn-devel-104

commit 31d1fde037d78e2c2becdedb9016a859e5e38437
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue Aug 7 21:20:47 2012 +1000

    s3-param: Remove never-reached condition for opt_list == NULL
    
    All the callers provide a parametric options pointer to fill in.
    
    Andrew Bartlett

commit d65bded0c2435a62bf0fe33828d6dc5b9a74f936
Author: Rusty Russell <rusty at rustcorp.com.au>
Date:   Mon Jul 23 14:51:39 2012 +0930

    source3/loadparm.c: Move string_set/string_free inside.
    
    The only user, so make them static inside loadparm.c
    
    Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>

commit 3bb65aa159cae310b2a5d4998c258d72ace2fa3f
Author: Rusty Russell <rusty at rustcorp.com.au>
Date:   Mon Jul 23 14:51:34 2012 +0930

    source3/smbd/conn.c: wean off string_set/string_free
    
    Use straight talloc strings.  This is the only user outside loadparm.c.
    
    Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>

commit a14c02d2a7b9d070a6338a360103a34e7673454c
Author: Rusty Russell <rusty at rustcorp.com.au>
Date:   Mon Jul 23 12:20:26 2012 +0930

    source3/loadparm: make struct loadparm_service a talloc object.
    
    This gives us a place to allocate members from.
    
    Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>

commit 592e3f4b236b3b5c056faca6ca6f060560a3204d
Author: Rusty Russell <rusty at rustcorp.com.au>
Date:   Mon Jul 23 12:19:46 2012 +0930

    loadparm: Add ctx member to struct loadparm_global.
    
    Rather than tallocing global parameters off NULL, keep it neat by having
    a Global.ctx member.
    
    Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>

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

Summary of changes:
 script/mkparamdefs.pl     |    4 ++-
 source3/Makefile.in       |    2 +-
 source3/include/proto.h   |    2 -
 source3/lib/string_init.c |   77 ---------------------------------------------
 source3/param/loadparm.c  |   66 +++++++++++++++++++++++++++++++++-----
 source3/smbd/conn.c       |   10 ++----
 source3/smbd/service.c    |    9 +++--
 source3/wscript_build     |    2 +-
 8 files changed, 70 insertions(+), 102 deletions(-)
 delete mode 100644 source3/lib/string_init.c


Changeset truncated at 500 lines:

diff --git a/script/mkparamdefs.pl b/script/mkparamdefs.pl
index b489cc9..6b59230 100644
--- a/script/mkparamdefs.pl
+++ b/script/mkparamdefs.pl
@@ -91,12 +91,14 @@ $file->("/* This file was automatically generated by mkparamdefs.pl. DO NOT EDIT
 	    $file->(" * This structure describes global (ie., server-wide) parameters.\n");
 	    $file->(" */\n");
 	    $file->("struct loadparm_global \n");
+	    $file->("{\n");
+	    $file->("\tTALLOC_CTX *ctx; /* Context for talloced members */\n");
 	} elsif ($generate_scope eq "LOCAL") {
 	    $file->(" * This structure describes a single service.\n");
 	    $file->(" */\n");
 	    $file->("struct loadparm_service \n");
+	    $file->("{\n");
 	}
-$file->("{\n");
 }
 
 sub print_footer($$$)
diff --git a/source3/Makefile.in b/source3/Makefile.in
index ff0f1f4..e42c1b5 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -466,7 +466,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) $(LIBTSOCKET_OBJ) \
 	  ../libds/common/flag_mapping.o \
 	  lib/access.o lib/smbrun.o \
 	  ../lib/util/bitmap.o ../lib/util/dprintf.o $(UTIL_REG_OBJ) \
-	  lib/wins_srv.o lib/string_init.o \
+	  lib/wins_srv.o \
 	  lib/util_str.o ../lib/util/util_str_common.o \
 	  ../lib/util/util_str.o \
 	  ../lib/util/base64.o lib/util_sid.o \
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 101d62d..ebb76ef 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -671,8 +671,6 @@ bool strhasupper(const char *s);
 bool strhaslower(const char *s);
 char *StrnCpy(char *dest,const char *src,size_t n);
 bool in_list(const char *s, const char *list, bool casesensitive);
-void string_free(char **s);
-bool string_set(char **dest,const char *src);
 void fstring_sub(char *s,const char *pattern,const char *insert);
 char *realloc_string_sub2(char *string,
 			const char *pattern,
diff --git a/source3/lib/string_init.c b/source3/lib/string_init.c
deleted file mode 100644
index 40a6ef0..0000000
--- a/source3/lib/string_init.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   Samba utility functions
-
-   Copyright (C) Andrew Tridgell 1992-2001
-   Copyright (C) Simo Sorce      2001-2002
-   Copyright (C) Martin Pool     2003
-   Copyright (C) James Peach	 2006
-   Copyright (C) Jeremy Allison  1992-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/>.
-*/
-
-#include "includes.h"
-
-/* this is used to prevent lots of mallocs of size 1 */
-static const char null_string[] = "";
-
-/**
- Set a string value, allocing the space for the string
-**/
-
-static bool string_init(char **dest,const char *src)
-{
-	size_t l;
-
-	if (!src)
-		src = "";
-
-	l = strlen(src);
-
-	if (l == 0) {
-		*dest = discard_const_p(char, null_string);
-	} else {
-		(*dest) = SMB_STRDUP(src);
-		if ((*dest) == NULL) {
-			DEBUG(0,("Out of memory in string_init\n"));
-			return false;
-		}
-	}
-	return(true);
-}
-
-/**
- Free a string value.
-**/
-
-void string_free(char **s)
-{
-	if (!s || !(*s))
-		return;
-	if (*s == null_string)
-		*s = NULL;
-	SAFE_FREE(*s);
-}
-
-/**
- Set a string value, deallocating any existing space, and allocing the space
- for the string
-**/
-
-bool string_set(char **dest,const char *src)
-{
-	string_free(dest);
-	return(string_init(dest,src));
-}
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 1b766c3..d4ee8a2 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -326,6 +326,58 @@ static void free_param_opts(struct parmlist_entry **popts);
 
 #include "lib/param/param_table.c"
 
+/* this is used to prevent lots of mallocs of size 1 */
+static const char null_string[] = "";
+
+/**
+ Set a string value, allocing the space for the string
+**/
+
+static bool string_init(char **dest,const char *src)
+{
+	size_t l;
+
+	if (!src)
+		src = "";
+
+	l = strlen(src);
+
+	if (l == 0) {
+		*dest = discard_const_p(char, null_string);
+	} else {
+		(*dest) = SMB_STRDUP(src);
+		if ((*dest) == NULL) {
+			DEBUG(0,("Out of memory in string_init\n"));
+			return false;
+		}
+	}
+	return(true);
+}
+
+/**
+ Free a string value.
+**/
+
+static void string_free(char **s)
+{
+	if (!s || !(*s))
+		return;
+	if (*s == null_string)
+		*s = NULL;
+	SAFE_FREE(*s);
+}
+
+/**
+ Set a string value, deallocating any existing space, and allocing the space
+ for the string
+**/
+
+static bool string_set(char **dest,const char *src)
+{
+	string_free(dest);
+	return(string_init(dest,src));
+}
+
 /***************************************************************************
  Initialise the sDefault parameter structure for the printer values.
 ***************************************************************************/
@@ -593,6 +645,7 @@ static void free_global_parameters(void)
 {
 	free_param_opts(&Globals.param_opt);
 	free_parameters_by_snum(GLOBAL_SECTION_SNUM);
+	TALLOC_FREE(Globals.ctx);
 }
 
 static int map_parameter(const char *pszParmName);
@@ -690,6 +743,8 @@ static void init_globals(bool reinit_globals)
 	 * table once the defaults are set */
 	ZERO_STRUCT(Globals);
 
+	Globals.ctx = talloc_new(NULL);
+
 	for (i = 0; parm_table[i].label; i++) {
 		if ((parm_table[i].type == P_STRING ||
 		     parm_table[i].type == P_USTRING))
@@ -1440,10 +1495,6 @@ static void free_param_opts(struct parmlist_entry **popts)
 {
 	struct parmlist_entry *opt, *next_opt;
 
-	if (popts == NULL) {
-		return;
-	}
-
 	if (*popts != NULL) {
 		DEBUG(5, ("Freeing parametrics:\n"));
 	}
@@ -1508,6 +1559,7 @@ static void free_service_byindex(int idx)
 	}
 
 	free_service(ServicePtrs[idx]);
+	talloc_free_children(ServicePtrs[idx]);
 }
 
 /***************************************************************************
@@ -1548,7 +1600,7 @@ static int add_a_service(const struct loadparm_service *pservice, const char *na
 			return (-1);
 		}
 		ServicePtrs = tsp;
-		ServicePtrs[iNumServices] = SMB_MALLOC_P(struct loadparm_service);
+		ServicePtrs[iNumServices] = talloc(NULL, struct loadparm_service);
 		if (!ServicePtrs[iNumServices]) {
 			DEBUG(0,("add_a_service: out of memory!\n"));
 			return (-1);
@@ -2198,10 +2250,6 @@ static void set_param_opt(struct parmlist_entry **opt_list,
 	struct parmlist_entry *new_opt, *opt;
 	bool not_added;
 
-	if (opt_list == NULL) {
-		return;
-	}
-
 	opt = *opt_list;
 	not_added = true;
 
diff --git a/source3/smbd/conn.c b/source3/smbd/conn.c
index 28e1850..bc5a03b 100644
--- a/source3/smbd/conn.c
+++ b/source3/smbd/conn.c
@@ -62,7 +62,9 @@ connection_struct *conn_new(struct smbd_server_connection *sconn)
 	connection_struct *conn;
 
 	if (!(conn=talloc_zero(NULL, connection_struct)) ||
-	    !(conn->params = talloc(conn, struct share_params))) {
+	    !(conn->params = talloc(conn, struct share_params)) ||
+	    !(conn->connectpath = talloc_strdup(conn, "")) ||
+	    !(conn->origpath = talloc_strdup(conn, ""))) {
 		DEBUG(0,("TALLOC_ZERO() failed!\n"));
 		TALLOC_FREE(conn);
 		return NULL;
@@ -70,9 +72,6 @@ connection_struct *conn_new(struct smbd_server_connection *sconn)
 	conn->sconn = sconn;
 	conn->force_group_gid = (gid_t)-1;
 
-	string_set(&conn->connectpath,"");
-	string_set(&conn->origpath,"");
-
 	DLIST_ADD(sconn->connections, conn);
 	sconn->num_connections++;
 
@@ -171,9 +170,6 @@ static void conn_free_internal(connection_struct *conn)
 	free_namearray(conn->veto_oplock_list);
 	free_namearray(conn->aio_write_behind_list);
 
-	string_free(&conn->connectpath);
-	string_free(&conn->origpath);
-
 	ZERO_STRUCTP(conn);
 	talloc_destroy(conn);
 }
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index a1d009c..4fc1aa3 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -61,7 +61,7 @@ bool set_conn_connectpath(connection_struct *conn, const char *connectpath)
 	}
 
 	/* Allocate for strlen + '\0' + possible leading '/' */
-	destname = (char *)SMB_MALLOC(strlen(connectpath) + 2);
+	destname = (char *)talloc_size(conn, strlen(connectpath) + 2);
 	if (!destname) {
 		return false;
 	}
@@ -162,8 +162,8 @@ bool set_conn_connectpath(connection_struct *conn, const char *connectpath)
 	DEBUG(10,("set_conn_connectpath: service %s, connectpath = %s\n",
 		lp_servicename(talloc_tos(), SNUM(conn)), destname ));
 
-	string_set(&conn->connectpath, destname);
-	SAFE_FREE(destname);
+	talloc_free(conn->connectpath);
+	conn->connectpath = destname;
 	return true;
 }
 
@@ -867,7 +867,8 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
 	}
 	conn->base_share_dev = smb_fname_cpath->st.st_ex_dev;
 
-	string_set(&conn->origpath,conn->connectpath);
+	talloc_free(conn->origpath);
+	conn->origpath = talloc_strdup(conn, conn->connectpath);
 
 	/* Figure out the characteristics of the underlying filesystem. This
 	 * assumes that all the filesystem mounted withing a share path have
diff --git a/source3/wscript_build b/source3/wscript_build
index 40afdd7..9125667 100755
--- a/source3/wscript_build
+++ b/source3/wscript_build
@@ -1058,7 +1058,7 @@ bld.SAMBA3_SUBSYSTEM('tdb-wrap3',
                     vars=locals())
 
 bld.SAMBA3_LIBRARY('samba3-util',
-                   source='''lib/util_sec.c lib/util_str.c lib/adt_tree.c lib/util_malloc.c lib/memcache.c lib/string_init.c lib/namearray.c lib/file_id.c''',
+                   source='''lib/util_sec.c lib/util_str.c lib/adt_tree.c lib/util_malloc.c lib/memcache.c lib/namearray.c lib/file_id.c''',
                    deps='samba-util charset',
                    private_library=True)
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list