Sudo should prompt for a password before telling the user that
a command could not be found.
This commit is contained in:
25
sudo.c
25
sudo.c
@@ -126,7 +126,7 @@ static int parse_args __P((void));
|
|||||||
static void usage __P((int));
|
static void usage __P((int));
|
||||||
static void load_globals __P((int));
|
static void load_globals __P((int));
|
||||||
static int check_sudoers __P((void));
|
static int check_sudoers __P((void));
|
||||||
static void load_cmnd __P((int));
|
static int load_cmnd __P((int));
|
||||||
static void add_env __P((int));
|
static void add_env __P((int));
|
||||||
static void clean_env __P((char **, struct env_table *));
|
static void clean_env __P((char **, struct env_table *));
|
||||||
extern int user_is_exempt __P((void));
|
extern int user_is_exempt __P((void));
|
||||||
@@ -189,7 +189,7 @@ int main(argc, argv)
|
|||||||
int argc;
|
int argc;
|
||||||
char **argv;
|
char **argv;
|
||||||
{
|
{
|
||||||
int rtn;
|
int rtn, found_cmnd;
|
||||||
int sudo_mode = MODE_RUN;
|
int sudo_mode = MODE_RUN;
|
||||||
extern char ** environ;
|
extern char ** environ;
|
||||||
|
|
||||||
@@ -303,7 +303,7 @@ int main(argc, argv)
|
|||||||
#endif /* SECURE_PATH */
|
#endif /* SECURE_PATH */
|
||||||
|
|
||||||
if ((sudo_mode & MODE_RUN)) {
|
if ((sudo_mode & MODE_RUN)) {
|
||||||
load_cmnd(sudo_mode); /* load the cmnd global variable */
|
found_cmnd = load_cmnd(sudo_mode); /* load the cmnd global variable */
|
||||||
} else if (sudo_mode == MODE_KILL) {
|
} else if (sudo_mode == MODE_KILL) {
|
||||||
remove_timestamp(); /* remove the timestamp ticket file */
|
remove_timestamp(); /* remove the timestamp ticket file */
|
||||||
exit(0);
|
exit(0);
|
||||||
@@ -320,6 +320,14 @@ int main(argc, argv)
|
|||||||
case VALIDATE_OK_NOPASS:
|
case VALIDATE_OK_NOPASS:
|
||||||
if (rtn != VALIDATE_OK_NOPASS)
|
if (rtn != VALIDATE_OK_NOPASS)
|
||||||
check_user();
|
check_user();
|
||||||
|
|
||||||
|
/* finally tell the user if the command did not exist */
|
||||||
|
if ((sudo_mode & MODE_RUN) && !found_cmnd) {
|
||||||
|
(void) fprintf(stderr, "%s: %s: command not found\n", Argv[0],
|
||||||
|
cmnd);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
log_error(ALL_SYSTEMS_GO);
|
log_error(ALL_SYSTEMS_GO);
|
||||||
if (sudo_mode == MODE_VALIDATE)
|
if (sudo_mode == MODE_VALIDATE)
|
||||||
exit(0);
|
exit(0);
|
||||||
@@ -749,9 +757,10 @@ static void add_env(contiguous)
|
|||||||
* load_cmnd()
|
* load_cmnd()
|
||||||
*
|
*
|
||||||
* This function sets the cmnd global variable
|
* This function sets the cmnd global variable
|
||||||
|
* Returns 1 on success, 0 on failure.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void load_cmnd(sudo_mode)
|
static int load_cmnd(sudo_mode)
|
||||||
int sudo_mode;
|
int sudo_mode;
|
||||||
{
|
{
|
||||||
if (strlen(NewArgv[0]) >= MAXPATHLEN) {
|
if (strlen(NewArgv[0]) >= MAXPATHLEN) {
|
||||||
@@ -765,10 +774,10 @@ static void load_cmnd(sudo_mode)
|
|||||||
* Resolve the path
|
* Resolve the path
|
||||||
*/
|
*/
|
||||||
if ((cmnd = find_path(NewArgv[0])) == NULL) {
|
if ((cmnd = find_path(NewArgv[0])) == NULL) {
|
||||||
(void) fprintf(stderr, "%s: %s: command not found\n", Argv[0],
|
cmnd = NewArgv[0];
|
||||||
NewArgv[0]);
|
return(0);
|
||||||
exit(1);
|
} else
|
||||||
}
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user