From 0c6a760fc290f2b7999e4403f211e7d2b5990052 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Tue, 4 Mar 2008 22:20:28 +0000 Subject: [PATCH] Error out if both -A and -S are specified Error out if -A is specified but no askpass is configured --- sudo.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/sudo.c b/sudo.c index c936d64b6..776c942f8 100644 --- a/sudo.c +++ b/sudo.c @@ -388,10 +388,17 @@ main(argc, argv, envp) if (def_askpass && !user_askpass) user_askpass = def_askpass; - /* If no tty is present but DISPLAY is set, use askpass if we have it. */ - if (user_askpass && !ISSET(tgetpass_flags, TGP_STDIN) && - user_ttypath == NULL && user_display != NULL && *user_display != '\0') - SET(tgetpass_flags, TGP_ASKPASS); + /* If user specified -A, make sure there is an askpass helper defined. */ + if (ISSET(tgetpass_flags, TGP_ASKPASS)) { + if (user_askpass == NULL) + log_error(NO_MAIL, + "no askpass program specified, try setting SUDO_ASKPASS"); + } else { + /* If no tty but DISPLAY is set, use askpass if we have it. */ + if (user_askpass && !ISSET(tgetpass_flags, TGP_STDIN) && + !user_ttypath && user_display && *user_display != '\0') + SET(tgetpass_flags, TGP_ASKPASS); + } /* User may have overriden environment resetting via the -E flag. */ if (ISSET(sudo_mode, MODE_PRESERVE_ENV) && def_setenv) @@ -1055,6 +1062,10 @@ args_done: excl); usage(1); } + if (ISSET(tgetpass_flags, TGP_STDIN) && ISSET(tgetpass_flags, TGP_ASKPASS)) { + warningx("the `-A' and `-S' options may not be used together"); + usage(1); + } if ((NewArgc == 0 && (rval & MODE_EDIT)) || (NewArgc > 0 && !(rval & (MODE_RUN | MODE_EDIT | MODE_CHECK)))) usage(1); -- 2.40.0