From: Todd C. Miller <Todd.Miller@courtesan.com>
Date: Tue, 14 Jul 2015 20:50:36 +0000 (-0600)
Subject: Add missing warnings for memory allocation failure.
X-Git-Tag: SUDO_1_8_14^2~2
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=108bfb7af370fa09e028fec9ca3a3092b2390930;p=sudo

Add missing warnings for memory allocation failure.
Add function name to memory allocation warnings.
---

diff --git a/plugins/sudoers/toke.c b/plugins/sudoers/toke.c
index 7bc4e4200..537aa21d4 100644
--- a/plugins/sudoers/toke.c
+++ b/plugins/sudoers/toke.c
@@ -4041,9 +4041,11 @@ read_dir_files(const char *dirpath, struct path_list ***pathsp)
 	}
 	goto bad;
     }
-    paths = malloc(sizeof(*paths) * max_paths);
-    if (paths == NULL)
+    paths = reallocarray(NULL, max_paths, sizeof(*paths));
+    if (paths == NULL) {
+	sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	goto bad;
+    }
     while ((dent = readdir(dir)) != NULL) {
 	struct path_list *pl;
 	struct stat sb;
@@ -4062,6 +4064,7 @@ read_dir_files(const char *dirpath, struct path_list ***pathsp)
 	}
 	pl = malloc(sizeof(*pl));
 	if (pl == NULL) {
+	    sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	    free(path);
 	    goto bad;
 	}
@@ -4071,6 +4074,7 @@ read_dir_files(const char *dirpath, struct path_list ***pathsp)
 	    max_paths <<= 1;
 	    tmp = reallocarray(paths, max_paths, sizeof(*paths));
 	    if (tmp == NULL) {
+		sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 		free(path);
 		free(pl);
 		goto bad;
@@ -4178,7 +4182,7 @@ push_include_int(char *path, bool isdir)
 	istacksize += SUDOERS_STACK_INCREMENT;
 	new_istack = reallocarray(istack, istacksize, sizeof(*istack));
 	if (new_istack == NULL) {
-	    sudo_warn(NULL);
+	    sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	    sudoerserror(NULL);
 	    debug_return_bool(false);
 	}
@@ -4336,7 +4340,7 @@ parse_include(char *base)
     len += (int)(ep - cp);
     path = pp = malloc(len + dirlen + 1);
     if (path == NULL) {
-	sudo_warn(NULL);
+	sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	sudoerserror(NULL);
 	debug_return_str(NULL);
     }
diff --git a/plugins/sudoers/toke.l b/plugins/sudoers/toke.l
index 6a40a681a..93b4ac695 100644
--- a/plugins/sudoers/toke.l
+++ b/plugins/sudoers/toke.l
@@ -770,9 +770,11 @@ read_dir_files(const char *dirpath, struct path_list ***pathsp)
 	}
 	goto bad;
     }
-    paths = malloc(sizeof(*paths) * max_paths);
-    if (paths == NULL)
+    paths = reallocarray(NULL, max_paths, sizeof(*paths));
+    if (paths == NULL) {
+	sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	goto bad;
+    }
     while ((dent = readdir(dir)) != NULL) {
 	struct path_list *pl;
 	struct stat sb;
@@ -791,6 +793,7 @@ read_dir_files(const char *dirpath, struct path_list ***pathsp)
 	}
 	pl = malloc(sizeof(*pl));
 	if (pl == NULL) {
+	    sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	    free(path);
 	    goto bad;
 	}
@@ -800,6 +803,7 @@ read_dir_files(const char *dirpath, struct path_list ***pathsp)
 	    max_paths <<= 1;
 	    tmp = reallocarray(paths, max_paths, sizeof(*paths));
 	    if (tmp == NULL) {
+		sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 		free(path);
 		free(pl);
 		goto bad;
@@ -907,7 +911,7 @@ push_include_int(char *path, bool isdir)
 	istacksize += SUDOERS_STACK_INCREMENT;
 	new_istack = reallocarray(istack, istacksize, sizeof(*istack));
 	if (new_istack == NULL) {
-	    sudo_warn(NULL);
+	    sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	    sudoerserror(NULL);
 	    debug_return_bool(false);
 	}
@@ -1065,7 +1069,7 @@ parse_include(char *base)
     len += (int)(ep - cp);
     path = pp = malloc(len + dirlen + 1);
     if (path == NULL) {
-	sudo_warn(NULL);
+	sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	sudoerserror(NULL);
 	debug_return_str(NULL);
     }
diff --git a/plugins/sudoers/toke_util.c b/plugins/sudoers/toke_util.c
index 87a56dd3b..b3073a5dd 100644
--- a/plugins/sudoers/toke_util.c
+++ b/plugins/sudoers/toke_util.c
@@ -53,7 +53,7 @@ fill_txt(const char *src, int len, int olen)
 
     dst = olen ? realloc(sudoerslval.string, olen + len + 1) : malloc(len + 1);
     if (dst == NULL) {
-	sudo_warn(NULL);
+	sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	sudoerserror(NULL);
 	debug_return_bool(false);
     }
@@ -106,7 +106,7 @@ fill_cmnd(const char *src, int len)
 
     dst = sudoerslval.command.cmnd = malloc(len + 1);
     if (sudoerslval.command.cmnd == NULL) {
-	sudo_warn(NULL);
+	sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	sudoerserror(NULL);
 	debug_return_bool(false);
     }
@@ -144,9 +144,9 @@ fill_args(const char *s, int len, int addspace)
 
 	p = realloc(sudoerslval.command.args, arg_size);
 	if (p == NULL) {
-	    free(sudoerslval.command.args);
-	    sudo_warn(NULL);
+	    sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
 	    sudoerserror(NULL);
+	    free(sudoerslval.command.args);
 	    debug_return_bool(false);
 	} else
 	    sudoerslval.command.args = p;