Fix -A flag when askpass is specified in sudo.conf or if sudo doesn't need
to read a password.
This commit is contained in:
@@ -45,9 +45,6 @@
|
|||||||
#include "sudo_plugin.h"
|
#include "sudo_plugin.h"
|
||||||
#include "sudo_plugin_int.h"
|
#include "sudo_plugin_int.h"
|
||||||
|
|
||||||
/* tgetpass.c */
|
|
||||||
extern const char *askpass_path;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read in /etc/sudo.conf
|
* Read in /etc/sudo.conf
|
||||||
* Returns a list of plugins.
|
* Returns a list of plugins.
|
||||||
|
@@ -363,11 +363,6 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, char ***settingsp,
|
|||||||
sudo_settings[ARG_IMPLIED_SHELL].value = "true";
|
sudo_settings[ARG_IMPLIED_SHELL].value = "true";
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef _PATH_SUDO_ASKPASS
|
|
||||||
if (ISSET(tgetpass_flags, TGP_ASKPASS) && !getenv("SUDO_ASKPASS"))
|
|
||||||
errorx(1, "no askpass program specified, try setting SUDO_ASKPASS");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (mode == MODE_HELP)
|
if (mode == MODE_HELP)
|
||||||
usage(0);
|
usage(0);
|
||||||
|
|
||||||
|
@@ -138,12 +138,12 @@ main(int argc, char *argv[], char *envp[])
|
|||||||
memset(&user_details, 0, sizeof(user_details));
|
memset(&user_details, 0, sizeof(user_details));
|
||||||
user_info = get_user_info(&user_details);
|
user_info = get_user_info(&user_details);
|
||||||
|
|
||||||
/* Parse command line arguments. */
|
|
||||||
sudo_mode = parse_args(argc, argv, &nargc, &nargv, &settings, &env_add);
|
|
||||||
|
|
||||||
/* Read sudo.conf and load plugins. */
|
/* Read sudo.conf and load plugins. */
|
||||||
sudo_load_plugins(_PATH_SUDO_CONF, &policy_plugin, &io_plugins);
|
sudo_load_plugins(_PATH_SUDO_CONF, &policy_plugin, &io_plugins);
|
||||||
|
|
||||||
|
/* Parse command line arguments. */
|
||||||
|
sudo_mode = parse_args(argc, argv, &nargc, &nargv, &settings, &env_add);
|
||||||
|
|
||||||
/* Open policy plugin. */
|
/* Open policy plugin. */
|
||||||
ok = policy_plugin.u.policy->open(SUDO_API_VERSION, sudo_conversation,
|
ok = policy_plugin.u.policy->open(SUDO_API_VERSION, sudo_conversation,
|
||||||
_sudo_printf, settings, user_info, envp);
|
_sudo_printf, settings, user_info, envp);
|
||||||
|
@@ -157,6 +157,7 @@ void cleanup(int);
|
|||||||
/* tgetpass.c */
|
/* tgetpass.c */
|
||||||
char *tgetpass(const char *, int, int);
|
char *tgetpass(const char *, int, int);
|
||||||
int tty_present(void);
|
int tty_present(void);
|
||||||
|
extern const char *askpass_path;
|
||||||
|
|
||||||
/* zero_bytes.c */
|
/* zero_bytes.c */
|
||||||
void zero_bytes(volatile void *, size_t);
|
void zero_bytes(volatile void *, size_t);
|
||||||
|
@@ -101,7 +101,8 @@ tgetpass(const char *prompt, int timeout, int flags)
|
|||||||
|
|
||||||
/* If using a helper program to get the password, run it instead. */
|
/* If using a helper program to get the password, run it instead. */
|
||||||
if (ISSET(flags, TGP_ASKPASS)) {
|
if (ISSET(flags, TGP_ASKPASS)) {
|
||||||
if (askpass && *askpass)
|
if (askpass == NULL || *askpass == '\0')
|
||||||
|
errorx(1, "no askpass program specified, try setting SUDO_ASKPASS");
|
||||||
return(sudo_askpass(askpass, prompt));
|
return(sudo_askpass(askpass, prompt));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user