From: Todd C. Miller Date: Sun, 10 Dec 2017 14:53:09 +0000 (-0700) Subject: Print usage and return an error when an empty argument is given for X-Git-Tag: SUDO_1_8_22^2~44 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d322caf7ac20b68c302a7ccff37cdc709d88f5f7;p=sudo Print usage and return an error when an empty argument is given for all command line arguments other than -p and -E. Bug #817 --- diff --git a/src/parse_args.c b/src/parse_args.c index 6742f018a..210c62e59 100644 --- a/src/parse_args.c +++ b/src/parse_args.c @@ -302,6 +302,8 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, break; #ifdef HAVE_BSD_AUTH_H case 'a': + if (*optarg == '\0') + usage(1); sudo_settings[ARG_BSDAUTH_TYPE].value = optarg; break; #endif @@ -317,6 +319,8 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, break; #ifdef HAVE_LOGIN_CAP_H case 'c': + if (*optarg == '\0') + usage(1); sudo_settings[ARG_LOGIN_CLASS].value = optarg; break; #endif @@ -342,6 +346,8 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, valid_flags = MODE_NONINTERACTIVE; break; case 'g': + if (*optarg == '\0') + usage(1); runas_group = optarg; sudo_settings[ARG_RUNAS_GROUP].value = optarg; break; @@ -370,6 +376,8 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, } /* FALLTHROUGH */ case OPT_HOSTNAME: + if (*optarg == '\0') + usage(1); sudo_settings[ARG_REMOTE_HOST].value = optarg; break; case 'i': @@ -404,17 +412,24 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, sudo_settings[ARG_PRESERVE_GROUPS].value = "true"; break; case 'p': + /* An empty prompt is allowed. */ sudo_settings[ARG_PROMPT].value = optarg; break; #ifdef HAVE_SELINUX case 'r': + if (*optarg == '\0') + usage(1); sudo_settings[ARG_SELINUX_ROLE].value = optarg; break; case 't': + if (*optarg == '\0') + usage(1); sudo_settings[ARG_SELINUX_TYPE].value = optarg; break; #endif case 'T': + if (*optarg == '\0') + usage(1); sudo_settings[ARG_TIMEOUT].value = optarg; break; case 'S': @@ -425,9 +440,13 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, SET(flags, MODE_SHELL); break; case 'U': + if (*optarg == '\0') + usage(1); list_user = optarg; break; case 'u': + if (*optarg == '\0') + usage(1); runas_user = optarg; sudo_settings[ARG_RUNAS_USER].value = optarg; break;