summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2002-01-19 17:22:28 +0000
committerSimo Sorce <idra@samba.org>2002-01-19 17:22:28 +0000
commit6431e54df0161707b6b46c8c6f701e21df95f1de (patch)
tree740b8924c553417a5fe0e991f84b6ed2cb43e8de
parentfcf0a2b07b7dbe2e73710fff0830e6726ea19aff (diff)
downloadsamba-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.c8
-rw-r--r--source/lib/snprintf.c1
-rw-r--r--source/libsmb/domain_client_validate.c23
-rw-r--r--source/nsswitch/winbindd_cm.c10
-rw-r--r--source/rpcclient/cmd_spoolss.c10
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);