From 360e088738aa792bf6c52e777d64b5163b45362a Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 7 Nov 2012 15:20:39 +0100 Subject: [PATCH] su: fix "COMMAND not specified" error # su su: COMMAND not specified This error message make sense for "runuser -u " only. Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=872787 Signed-off-by: Karel Zak --- login-utils/su-common.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/login-utils/su-common.c b/login-utils/su-common.c index 1fa76c8..5abdc84 100644 --- a/login-utils/su-common.c +++ b/login-utils/su-common.c @@ -761,19 +761,28 @@ su_main (int argc, char **argv, int mode) ++optind; } - /* if not "-u " specified then fallback to classic su(1) */ - if (!runuser_user && optind < argc) - new_user = argv[optind++]; - else { - /* runuser -u */ - new_user = runuser_user; - if (shell || fast_startup || command || simulate_login) { - errx(EXIT_FAILURE, + switch (su_mode) { + case RUNUSER_MODE: + if (runuser_user) { + /* runuser -u */ + new_user = runuser_user; + if (shell || fast_startup || command || simulate_login) { + errx(EXIT_FAILURE, _("options --{shell,fast,command,session-command,login} and " "--user are mutually exclusive.")); + } + if (optind == argc) + errx(EXIT_FAILURE, _("COMMAND not specified.")); + + break; } - if (optind == argc) - errx(EXIT_FAILURE, _("COMMAND not specified.")); + /* fallthrough if -u is not specified, then follow + * traditional su(1) behavior + */ + case SU_MODE: + if (optind < argc) + new_user = argv[optind++]; + break; } if ((num_supp_groups || use_gid) && restricted) -- 1.7.11.7