From 108bfb7af370fa09e028fec9ca3a3092b2390930 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Tue, 14 Jul 2015 14:50:36 -0600 Subject: [PATCH] Add missing warnings for memory allocation failure. Add function name to memory allocation warnings. --- plugins/sudoers/toke.c | 12 ++++++++---- plugins/sudoers/toke.l | 12 ++++++++---- plugins/sudoers/toke_util.c | 8 ++++---- 3 files changed, 20 insertions(+), 12 deletions(-) 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; -- 2.40.0