Avoid using exiting allocators in the front end.
This commit is contained in:
@@ -184,7 +184,9 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv,
|
||||
if (argc <= 0)
|
||||
usage(1);
|
||||
|
||||
env_add = sudo_emallocarray(env_size, sizeof(char *));
|
||||
env_add = reallocarray(NULL, env_size, sizeof(char *));
|
||||
if (env_add == NULL)
|
||||
sudo_fatalx(U_("unable to allocate memory"));
|
||||
|
||||
/* Pass progname to plugin so it can call initprogname() */
|
||||
progname = getprogname();
|
||||
@@ -205,7 +207,8 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv,
|
||||
/* Set max_groups from sudo.conf. */
|
||||
i = sudo_conf_max_groups();
|
||||
if (i != -1) {
|
||||
sudo_easprintf(&cp, "%d", i);
|
||||
if (asprintf(&cp, "%d", i) == -1)
|
||||
sudo_fatalx(U_("unable to allocate memory"));
|
||||
sudo_settings[ARG_MAX_GROUPS].value = cp;
|
||||
}
|
||||
|
||||
@@ -369,8 +372,13 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv,
|
||||
}
|
||||
} else if (!got_end_of_args && is_envar) {
|
||||
if (nenv == env_size - 2) {
|
||||
char **tmp;
|
||||
|
||||
tmp = reallocarray(env_add, env_size, 2 * sizeof(char *));
|
||||
if (tmp == NULL)
|
||||
sudo_fatalx(U_("unable to allocate memory"));
|
||||
env_add = tmp;
|
||||
env_size *= 2;
|
||||
env_add = sudo_ereallocarray(env_add, env_size, sizeof(char *));
|
||||
}
|
||||
env_add[nenv++] = argv[optind];
|
||||
|
||||
@@ -462,7 +470,9 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv,
|
||||
size_t cmnd_size = (size_t) (argv[argc - 1] - argv[0]) +
|
||||
strlen(argv[argc - 1]) + 1;
|
||||
|
||||
cmnd = dst = sudo_emallocarray(cmnd_size, 2);
|
||||
cmnd = dst = reallocarray(NULL, cmnd_size, 2);
|
||||
if (cmnd == NULL)
|
||||
sudo_fatalx(U_("unable to allocate memory"));
|
||||
for (av = argv; *av != NULL; av++) {
|
||||
for (src = *av; *src != '\0'; src++) {
|
||||
/* quote potential meta characters */
|
||||
@@ -479,7 +489,9 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv,
|
||||
ac += 2; /* -c cmnd */
|
||||
}
|
||||
|
||||
av = sudo_emallocarray(ac + 1, sizeof(char *));
|
||||
av = reallocarray(NULL, ac + 1, sizeof(char *));
|
||||
if (av == NULL)
|
||||
sudo_fatalx(U_("unable to allocate memory"));
|
||||
av[0] = (char *)user_details.shell; /* plugin may override shell */
|
||||
if (cmnd != NULL) {
|
||||
av[1] = "-c";
|
||||
|
Reference in New Issue
Block a user