diff options
author | Simo Sorce <idra@samba.org> | 2002-01-19 17:22:28 +0000 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2002-01-19 17:22:28 +0000 |
commit | 6431e54df0161707b6b46c8c6f701e21df95f1de (patch) | |
tree | 740b8924c553417a5fe0e991f84b6ed2cb43e8de | |
parent | fcf0a2b07b7dbe2e73710fff0830e6726ea19aff (diff) | |
download | samba-6431e54df0161707b6b46c8c6f701e21df95f1de.tar.gz samba-6431e54df0161707b6b46c8c6f701e21df95f1de.tar.xz samba-6431e54df0161707b6b46c8c6f701e21df95f1de.zip |
fixes to check asprintf return
thanks to Andreas Moroder for spotting them
-rw-r--r-- | source/client/client.c | 8 | ||||
-rw-r--r-- | source/lib/snprintf.c | 1 | ||||
-rw-r--r-- | source/libsmb/domain_client_validate.c | 23 | ||||
-rw-r--r-- | source/nsswitch/winbindd_cm.c | 10 | ||||
-rw-r--r-- | source/rpcclient/cmd_spoolss.c | 10 |
5 files changed, 31 insertions, 21 deletions
diff --git a/source/client/client.c b/source/client/client.c index bd8a52226ad..adaf7ddf629 100644 --- a/source/client/client.c +++ b/source/client/client.c @@ -1306,7 +1306,7 @@ static void cmd_mput(void) /* if (!recurse) continue; */ SAFE_FREE(quest); - asprintf(&quest, "Put directory %s? ", lname); + if (asprintf(&quest, "Put directory %s? ", lname) < 0) break; if (prompt && !yesno(quest)) { /* No */ /* Skip the directory */ lname[strlen(lname)-1] = '/'; @@ -1314,7 +1314,7 @@ static void cmd_mput(void) break; } else { /* Yes */ SAFE_FREE(rname); - asprintf(&rname, "%s%s", cur_dir, lname); + if (asprintf(&rname, "%s%s", cur_dir, lname) < 0) break; dos_format(rname); if (!cli_chkpath(cli, rname) && !do_mkdir(rname)) { @@ -1328,13 +1328,13 @@ static void cmd_mput(void) continue; } else { SAFE_FREE(quest); - asprintf(&quest,"Put file %s? ", lname); + if (asprintf(&quest,"Put file %s? ", lname) < 0) break; if (prompt && !yesno(quest)) /* No */ continue; /* Yes */ SAFE_FREE(rname); - asprintf(&rname, "%s%s", cur_dir, lname); + if (asprintf(&rname, "%s%s", cur_dir, lname) < 0) break; } dos_format(rname); diff --git a/source/lib/snprintf.c b/source/lib/snprintf.c index 6f6d0f09830..0b0bdb0b335 100644 --- a/source/lib/snprintf.c +++ b/source/lib/snprintf.c @@ -808,6 +808,7 @@ static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, char c) va_list ap; int ret; + *ptr = NULL; va_start(ap, format); ret = vasprintf(ptr, format, ap); va_end(ap); diff --git a/source/libsmb/domain_client_validate.c b/source/libsmb/domain_client_validate.c index 995d3d1c2a1..04ce90895ae 100644 --- a/source/libsmb/domain_client_validate.c +++ b/source/libsmb/domain_client_validate.c @@ -345,22 +345,25 @@ NTSTATUS domain_client_validate(const auth_usersupplied_info *user_info, /* Check DOMAIN\username first to catch winbind users, then just the username for local users. */ - asprintf(&dom_user, "%s%s%s", user_info->domain.str, + if (asprintf(&dom_user, "%s%s%s", user_info->domain.str, lp_winbind_separator(), - user_info->internal_username.str); + user_info->internal_username.str) > 0) { - if (!(pass = Get_Pwnam(dom_user))) - pass = Get_Pwnam(user_info->internal_username.str); + if (!(pass = Get_Pwnam(dom_user))) + pass = Get_Pwnam(user_info->internal_username.str); - SAFE_FREE(dom_user); + SAFE_FREE(dom_user); - if (pass) { - make_server_info_pw(server_info, pass); - if (!server_info) { - status = NT_STATUS_NO_MEMORY; + if (pass) { + make_server_info_pw(server_info, pass); + if (!server_info) { + status = NT_STATUS_NO_MEMORY; + } + } else { + status = NT_STATUS_NO_SUCH_USER; } } else { - status = NT_STATUS_NO_SUCH_USER; + status = NT_STATUS_NO_MEMORY; } } diff --git a/source/nsswitch/winbindd_cm.c b/source/nsswitch/winbindd_cm.c index 4c1554faf87..af03826ad07 100644 --- a/source/nsswitch/winbindd_cm.c +++ b/source/nsswitch/winbindd_cm.c @@ -713,10 +713,12 @@ static void dump_conn_list(void) /* Display pipe info */ - asprintf(&msg, "\t%-15s %-15s %-16s", con->domain, con->controller, con->pipe_name); - - DEBUG(0, ("%s\n", msg)); - SAFE_FREE(msg); + if (asprintf(&msg, "\t%-15s %-15s %-16s", con->domain, con->controller, con->pipe_name) < 0) { + DEBUG(0, ("Error: not enough memory!\n")); + } else { + DEBUG(0, ("%s\n", msg)); + SAFE_FREE(msg); + } } } diff --git a/source/rpcclient/cmd_spoolss.c b/source/rpcclient/cmd_spoolss.c index e401a6911a9..b3bffde2ba0 100644 --- a/source/rpcclient/cmd_spoolss.c +++ b/source/rpcclient/cmd_spoolss.c @@ -1229,11 +1229,15 @@ static NTSTATUS cmd_spoolss_getprintprocdir(struct cli_state *cli, return NT_STATUS_OK; } - asprintf(&servername, "\\\\%s", cli->desthost); + if (asprintf(&servername, "\\\\%s", cli->desthost) < 0) + return NT_STATUS_NO_MEMORY; strupper(servername); - asprintf(&environment, "%s", (argc == 3) ? argv[2] : - PRINTER_DRIVER_ARCHITECTURE); + if (asprintf(&environment, "%s", (argc == 3) ? argv[2] : + PRINTER_DRIVER_ARCHITECTURE) < 0) { + SAFE_FREE(servername); + return NT_STATUS_NO_MEMORY; + } result = cli_spoolss_getprintprocessordirectory( cli, mem_ctx, servername, environment, procdir); |