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

Reply via email to