Prevent "testsudoers -d username" from trying to malloc(0).
This commit is contained in:
@@ -190,11 +190,12 @@ main(int argc, char *argv[])
|
|||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
if (!dflag)
|
if (!dflag)
|
||||||
usage();
|
usage();
|
||||||
user_name = "root";
|
user_name = argc ? *argv++ : "root";
|
||||||
user_cmnd = user_base = "true";
|
user_cmnd = user_base = "true";
|
||||||
|
argc = 0;
|
||||||
} else {
|
} else {
|
||||||
user_name = *argv;
|
user_name = *argv++;
|
||||||
user_cmnd = *++argv;
|
user_cmnd = *argv++;
|
||||||
if ((p = strrchr(user_cmnd, '/')) != NULL)
|
if ((p = strrchr(user_cmnd, '/')) != NULL)
|
||||||
user_base = p + 1;
|
user_base = p + 1;
|
||||||
else
|
else
|
||||||
@@ -223,11 +224,11 @@ main(int argc, char *argv[])
|
|||||||
char *to, **from;
|
char *to, **from;
|
||||||
size_t size, n;
|
size_t size, n;
|
||||||
|
|
||||||
for (size = 0, from = argv + 1; *from; from++)
|
for (size = 0, from = argv; *from; from++)
|
||||||
size += strlen(*from) + 1;
|
size += strlen(*from) + 1;
|
||||||
|
|
||||||
user_args = (char *) emalloc(size);
|
user_args = (char *) emalloc(size);
|
||||||
for (to = user_args, from = argv + 1; *from; from++) {
|
for (to = user_args, from = argv; *from; from++) {
|
||||||
n = strlcpy(to, *from, size - (to - user_args));
|
n = strlcpy(to, *from, size - (to - user_args));
|
||||||
if (n >= size - (to - user_args))
|
if (n >= size - (to - user_args))
|
||||||
errorx(1, _("internal error, init_vars() overflow"));
|
errorx(1, _("internal error, init_vars() overflow"));
|
||||||
|
Reference in New Issue
Block a user