[SCM] Samba Shared Repository - branch master updated

Matthias Dieter Wallnöfer mdw at samba.org
Fri May 28 02:25:11 MDT 2010


The branch, master has been updated
       via  ce99f9e... s4:web_server/wsgi.c - fix "asprintf" call
       via  fe2a607... s4:utils/ntlm_auth.c - fix "asprintf" calls
       via  a642626... s4:smbd/pidfile.c - fix "asprintf" calls
       via  67b2c42... s4:scripting/python/modules.c - fix "asprintf" calls
       via  e831af7... s4:param/loadparm.c - fix "asprintf" call
       via  7a3a1cb... s4:ntvfs/simple/svfs_util.c - change an "asprintf" into a "talloc_asprintf"
       via  69166d3... s4:ntvfs/nbench/vfs_bench.c - change a "asprintf" into a "talloc_asprintf"
       via  315ae8a... s4:libcli/clideltree.c - fix "asprintf"s
       via  2c32523... s4:regshell - fix an "asprintf"
       via  8ddb4f6... s4:regshell - don't use negative exit codes
       via  3318459... s4:client/client.c - fix "asprintf"s
      from  892a4b2... waf Read VERSION file inside WAF to set package version

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


- Log -----------------------------------------------------------------
commit ce99f9e73438ac8a62347f628f7c5d25941023da
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 17:45:19 2010 +0200

    s4:web_server/wsgi.c - fix "asprintf" call

commit fe2a6076402ec26091eb0c543447e0ae09f39f75
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 17:41:39 2010 +0200

    s4:utils/ntlm_auth.c - fix "asprintf" calls

commit a64262697afb85f8db5872238c51b9499114ee58
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 17:37:15 2010 +0200

    s4:smbd/pidfile.c - fix "asprintf" calls

commit 67b2c424cefbecfe8581044703ba178c61c0ece1
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 17:36:33 2010 +0200

    s4:scripting/python/modules.c - fix "asprintf" calls

commit e831af7f076fe464d8860535ecae1986299765bd
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 17:28:52 2010 +0200

    s4:param/loadparm.c - fix "asprintf" call

commit 7a3a1cb5a76aae697f7a820c4fc5305f5684487f
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 17:18:03 2010 +0200

    s4:ntvfs/simple/svfs_util.c - change an "asprintf" into a "talloc_asprintf"

commit 69166d3ebb1ad1590d1d6078a2c6b592d06aef5e
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 17:11:00 2010 +0200

    s4:ntvfs/nbench/vfs_bench.c - change a "asprintf" into a "talloc_asprintf"

commit 315ae8ae9787935f012169b2c001a827078c92e0
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 17:06:12 2010 +0200

    s4:libcli/clideltree.c - fix "asprintf"s

commit 2c325236be3d16c200ba4f85d8f0a33b3c5d8e73
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 17:02:02 2010 +0200

    s4:regshell - fix an "asprintf"

commit 8ddb4f6c84b431854a21825f2663d41878adf4ee
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 17:00:50 2010 +0200

    s4:regshell - don't use negative exit codes

commit 3318459fdc2df686892f4257dca709ac66784e82
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Thu May 27 16:59:14 2010 +0200

    s4:client/client.c - fix "asprintf"s
    
    Fix the result values or change them into "talloc_asprintf"s where possible
    
    see bug #6404

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

Summary of changes:
 source4/client/client.c               |   24 +++++++++++++++---------
 source4/lib/registry/tools/regshell.c |    8 ++++++--
 source4/libcli/clideltree.c           |   15 ++++++++++++---
 source4/ntvfs/nbench/vfs_nbench.c     |    6 ++++--
 source4/ntvfs/simple/svfs_util.c      |    5 +++--
 source4/param/loadparm.c              |    5 +++--
 source4/scripting/python/modules.c    |    8 ++++++--
 source4/smbd/pidfile.c                |    9 +++++++--
 source4/utils/ntlm_auth.c             |   17 +++++++++++------
 source4/web_server/wsgi.c             |    4 +++-
 10 files changed, 70 insertions(+), 31 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/client/client.c b/source4/client/client.c
index cf834b9..2a2c8ac 100644
--- a/source4/client/client.c
+++ b/source4/client/client.c
@@ -863,18 +863,19 @@ static void do_mget(struct smbclient_context *ctx, struct clilist_file_info *fin
 		return;
 
 	if (finfo->attrib & FILE_ATTRIBUTE_DIRECTORY)
-		asprintf(&quest, "Get directory %s? ",finfo->name);
+		quest = talloc_asprintf(ctx, "Get directory %s? ",finfo->name);
 	else
-		asprintf(&quest, "Get file %s? ",finfo->name);
+		quest = talloc_asprintf(ctx, "Get file %s? ",finfo->name);
 
 	if (ctx->prompt && !yesno(quest)) return;
 
-	SAFE_FREE(quest);
+	talloc_free(quest);
 
 	if (!(finfo->attrib & FILE_ATTRIBUTE_DIRECTORY)) {
-		asprintf(&rname, "%s%s",ctx->remote_cur_dir,finfo->name);
+		rname = talloc_asprintf(&ctx, "%s%s",ctx->remote_cur_dir,
+					finfo->name);
 		do_get(ctx, rname, finfo->name, false);
-		SAFE_FREE(rname);
+		talloc_free(rname);
 		return;
 	}
 
@@ -2832,7 +2833,7 @@ static void completion_remote_filter(struct clilist_file_info *f, const char *ma
 static char **remote_completion(const char *text, int len)
 {
 	char *dirmask;
-	int i;
+	int i, ret;
 	completion_remote_t info;
 
 	info.samelen = len;
@@ -2855,9 +2856,14 @@ static char **remote_completion(const char *text, int len)
 	if (i > 0) {
 		info.dirmask = talloc_strndup(NULL, text, i+1);
 		info.dirmask[i+1] = 0;
-		asprintf(&dirmask, "%s%*s*", rl_ctx->remote_cur_dir, i-1, text);
-	} else
-		asprintf(&dirmask, "%s*", rl_ctx->remote_cur_dir);
+		ret = asprintf(&dirmask, "%s%*s*", rl_ctx->remote_cur_dir, i-1,
+			       text);
+	} else {
+		ret = asprintf(&dirmask, "%s*", rl_ctx->remote_cur_dir);
+	}
+	if (ret < 0) {
+		goto cleanup;
+	}
 
 	if (smbcli_list(rl_ctx->cli->tree, dirmask, 
 		     FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN, 
diff --git a/source4/lib/registry/tools/regshell.c b/source4/lib/registry/tools/regshell.c
index 3a8c62d..993fe3d 100644
--- a/source4/lib/registry/tools/regshell.c
+++ b/source4/lib/registry/tools/regshell.c
@@ -614,7 +614,7 @@ int main(int argc, char **argv)
 
 	if (ctx->current == NULL) {
 		fprintf(stderr, "Unable to access any of the predefined keys\n");
-		return -1;
+		return 1;
 	}
 
 	poptFreeContext(pc);
@@ -622,7 +622,11 @@ int main(int argc, char **argv)
 	while (true) {
 		char *line, *prompt;
 
-		asprintf(&prompt, "%s\\%s> ", ctx->predef?ctx->predef:"", ctx->path);
+		if (asprintf(&prompt, "%s\\%s> ", ctx->predef?ctx->predef:"",
+			     ctx->path) < 0) {
+			ret = false;
+			break;
+		}
 
 		current_key = ctx->current; 		/* No way to pass a void * pointer
 							   via readline :-( */
diff --git a/source4/libcli/clideltree.c b/source4/libcli/clideltree.c
index d947ac3..7bce95c 100644
--- a/source4/libcli/clideltree.c
+++ b/source4/libcli/clideltree.c
@@ -41,7 +41,10 @@ static void delete_fn(struct clilist_file_info *finfo, const char *name, void *s
 
 	n = strdup(name);
 	n[strlen(n)-1] = 0;
-	asprintf(&s, "%s%s", n, finfo->name);
+	if (asprintf(&s, "%s%s", n, finfo->name) < 0) {
+		free(n);
+		return;
+	}
 
 	if (finfo->attrib & FILE_ATTRIBUTE_READONLY) {
 		if (NT_STATUS_IS_ERR(smbcli_setatr(dstate->tree, s, 0, 0))) {
@@ -52,7 +55,11 @@ static void delete_fn(struct clilist_file_info *finfo, const char *name, void *s
 
 	if (finfo->attrib & FILE_ATTRIBUTE_DIRECTORY) {
 		char *s2;
-		asprintf(&s2, "%s\\*", s);
+		if (asprintf(&s2, "%s\\*", s) < 0) {
+			free(s);
+			free(n);
+			return;
+		}
 		smbcli_unlink(dstate->tree, s2);
 		smbcli_list(dstate->tree, s2, 
 			 FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM, 
@@ -109,7 +116,9 @@ int smbcli_deltree(struct smbcli_tree *tree, const char *dname)
 		}
 	}
 
-	asprintf(&mask, "%s\\*", dname);
+	if (asprintf(&mask, "%s\\*", dname) < 0) {
+		return -1;
+	}
 	smbcli_unlink(dstate.tree, mask);
 	smbcli_list(dstate.tree, mask, 
 		 FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM, 
diff --git a/source4/ntvfs/nbench/vfs_nbench.c b/source4/ntvfs/nbench/vfs_nbench.c
index 2500140..72873a1 100644
--- a/source4/ntvfs/nbench/vfs_nbench.c
+++ b/source4/ntvfs/nbench/vfs_nbench.c
@@ -123,9 +123,11 @@ static NTSTATUS nbench_connect(struct ntvfs_module_context *ntvfs,
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	asprintf(&logname, "/tmp/nbenchlog%d.%u", ntvfs->depth, getpid());
+	logname = talloc_asprintf(req, "/tmp/nbenchlog%d.%u", ntvfs->depth,
+				  getpid());
+	NT_STATUS_HAVE_NO_MEMORY(logname);
 	nprivates->log_fd = open(logname, O_WRONLY|O_CREAT|O_APPEND, 0644);
-	free(logname);
+	talloc_free(logname);
 
 	if (nprivates->log_fd == -1) {
 		DEBUG(0,("Failed to open nbench log\n"));
diff --git a/source4/ntvfs/simple/svfs_util.c b/source4/ntvfs/simple/svfs_util.c
index 70ba340..2a01c2d 100644
--- a/source4/ntvfs/simple/svfs_util.c
+++ b/source4/ntvfs/simple/svfs_util.c
@@ -120,14 +120,15 @@ struct svfs_dir *svfs_list_unix(TALLOC_CTX *mem_ctx, struct ntvfs_request *req,
 		dir->files[i].name = low_name;
 		if (!dir->files[i].name) { continue; }
 
-		asprintf(&full_name, "%s/%s", dir->unix_dir, dir->files[i].name);
+		full_name = talloc_asprintf(mem_ctx, "%s/%s", dir->unix_dir,
+					    dir->files[i].name);
 		if (!full_name) { continue; }
 
 		if (stat(full_name, &dir->files[i].st) == 0) { 
 			dir->count++;
 		}
 
-		free(full_name); 
+		talloc_free(full_name);
 	}
 
 	closedir(odir);
diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c
index 1264106..8c0f7d4 100644
--- a/source4/param/loadparm.c
+++ b/source4/param/loadparm.c
@@ -771,8 +771,8 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx,
 			      struct loadparm_service *service,
 			      const char *type, const char *option)
 {
-	char *vfskey;
-        struct parmlist_entry *data;
+	char *vfskey = NULL;
+	struct parmlist_entry *data;
 
 	if (lp_ctx == NULL)
 		return NULL;
@@ -780,6 +780,7 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx,
 	data = (service == NULL ? lp_ctx->globals->param_opt : service->param_opt);
 
 	asprintf(&vfskey, "%s:%s", type, option);
+	if (vfskey == NULL) return NULL;
 	strlower(vfskey);
 
 	while (data) {
diff --git a/source4/scripting/python/modules.c b/source4/scripting/python/modules.c
index 788df91..6cc3ca5 100644
--- a/source4/scripting/python/modules.c
+++ b/source4/scripting/python/modules.c
@@ -94,14 +94,18 @@ bool py_update_path(const char *bindir)
 		return false;
 	}
 
-	asprintf(&newpath, "%s/../scripting/python", bindir);
+	if (asprintf(&newpath, "%s/../scripting/python", bindir) < 0) {
+		return false;
+	}
 	if (!PySys_PathPrepend(py_path, newpath)) {
 		free(newpath);
 		return false;
 	}
 	free(newpath);
 
-	asprintf(&newpath, "%s/python", bindir);
+	if (asprintf(&newpath, "%s/python", bindir) < 0) {
+		return false;
+	}
 	if (!PySys_PathPrepend(py_path, newpath)) {
 		free(newpath);
 		return false;
diff --git a/source4/smbd/pidfile.c b/source4/smbd/pidfile.c
index da3f363..de93a03 100644
--- a/source4/smbd/pidfile.c
+++ b/source4/smbd/pidfile.c
@@ -38,7 +38,9 @@ pid_t pidfile_pid(const char *piddir, const char *name)
 	pid_t ret;
 	char *pidFile;
 
-	asprintf(&pidFile, "%s/%s.pid", piddir, name);
+	if (asprintf(&pidFile, "%s/%s.pid", piddir, name) < 0) {
+		return 0;
+	}
 
 	fd = open(pidFile, O_NONBLOCK | O_RDONLY, 0644);
 
@@ -85,7 +87,10 @@ void pidfile_create(const char *piddir, const char *name)
 	char *pidFile;
 	pid_t pid;
 
-	asprintf(&pidFile, "%s/%s.pid", piddir, name);
+	if (asprintf(&pidFile, "%s/%s.pid", piddir, name) < 0) {
+		DEBUG(0,("ERROR: Out of memory\n"));
+		exit(1);
+	}
 
 	pid = pidfile_pid(piddir, name);
 	if (pid != 0) {
diff --git a/source4/utils/ntlm_auth.c b/source4/utils/ntlm_auth.c
index 17e724e..9c6d3d3 100644
--- a/source4/utils/ntlm_auth.c
+++ b/source4/utils/ntlm_auth.c
@@ -225,10 +225,11 @@ static NTSTATUS local_pw_check_specified(struct loadparm_context *lp_ctx,
 		
 		if (NT_STATUS_IS_OK(nt_status)) {
 			if (unix_name) {
-				asprintf(unix_name, 
-					 "%s%c%s", domain,
-					 *lp_winbind_separator(lp_ctx), 
-					 username);
+				if (asprintf(unix_name, "%s%c%s", domain,
+					     *lp_winbind_separator(lp_ctx),
+					     username) < 0) {
+					nt_status = NT_STATUS_NO_MEMORY;
+				}
 			}
 		} else {
 			DEBUG(3, ("Login for user [%s]\\[%s]@[%s] failed due to [%s]\n", 
@@ -759,7 +760,7 @@ static void manage_ntlm_server_1_request(enum stdio_helper_mode stdio_helper_mod
 		} else if (plaintext_password) {
 			/* handle this request as plaintext */
 			if (!full_username) {
-				if (asprintf(&full_username, "%s%c%s", domain, *lp_winbind_separator(lp_ctx), username) == -1) {
+				if (asprintf(&full_username, "%s%c%s", domain, *lp_winbind_separator(lp_ctx), username) < 0) {
 					mux_printf(mux_id, "Error: Out of memory in asprintf!\n.\n");
 					return;
 				}
@@ -1169,7 +1170,11 @@ int main(int argc, const char **argv)
 	{
 		char *user;
 
-		asprintf(&user, "%s%c%s", opt_domain, *lp_winbind_separator(cmdline_lp_ctx), opt_username);
+		if (asprintf(&user, "%s%c%s", opt_domain,
+		             *lp_winbind_separator(cmdline_lp_ctx),
+			     opt_username) < 0) {
+			return 1;
+		}
 		if (!check_plaintext_auth(user, opt_password, true)) {
 			return 1;
 		}
diff --git a/source4/web_server/wsgi.c b/source4/web_server/wsgi.c
index 7ee70e1..7a23ae4 100644
--- a/source4/web_server/wsgi.c
+++ b/source4/web_server/wsgi.c
@@ -300,7 +300,9 @@ static PyObject *create_environ(bool tls, int content_length, struct http_header
 		if (!strcasecmp(hdr->name, "Content-Type")) {
 			PyDict_SetItemString(env, "CONTENT_TYPE", PyString_FromString(hdr->value));
 		} else { 
-			asprintf(&name, "HTTP_%s", hdr->name);
+			if (asprintf(&name, "HTTP_%s", hdr->name) < 0) {
+				continue;
+			}
 			PyDict_SetItemString(env, name, PyString_FromString(hdr->value));
 			free(name);
 		}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list