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 <[email protected]>
Date: Thu May 27 17:45:19 2010 +0200
s4:web_server/wsgi.c - fix "asprintf" call
commit fe2a6076402ec26091eb0c543447e0ae09f39f75
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Thu May 27 17:41:39 2010 +0200
s4:utils/ntlm_auth.c - fix "asprintf" calls
commit a64262697afb85f8db5872238c51b9499114ee58
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Thu May 27 17:37:15 2010 +0200
s4:smbd/pidfile.c - fix "asprintf" calls
commit 67b2c424cefbecfe8581044703ba178c61c0ece1
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Thu May 27 17:36:33 2010 +0200
s4:scripting/python/modules.c - fix "asprintf" calls
commit e831af7f076fe464d8860535ecae1986299765bd
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Thu May 27 17:28:52 2010 +0200
s4:param/loadparm.c - fix "asprintf" call
commit 7a3a1cb5a76aae697f7a820c4fc5305f5684487f
Author: Matthias Dieter Wallnöfer <[email protected]>
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 <[email protected]>
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 <[email protected]>
Date: Thu May 27 17:06:12 2010 +0200
s4:libcli/clideltree.c - fix "asprintf"s
commit 2c325236be3d16c200ba4f85d8f0a33b3c5d8e73
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Thu May 27 17:02:02 2010 +0200
s4:regshell - fix an "asprintf"
commit 8ddb4f6c84b431854a21825f2663d41878adf4ee
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Thu May 27 17:00:50 2010 +0200
s4:regshell - don't use negative exit codes
commit 3318459fdc2df686892f4257dca709ac66784e82
Author: Matthias Dieter Wallnöfer <[email protected]>
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] 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