Add SUDO_CONV_PROMPT_MASK define which corresponds to the "pwfeedback"
sudoers option. Do not disable echo if TGP_ECHO is set.
This commit is contained in:
@@ -61,7 +61,7 @@ SSuuddoo PPlluuggiinn AAPPII
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 1
|
||||
1.8.0a2 June 9, 2010 1
|
||||
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 2
|
||||
1.8.0a2 June 9, 2010 2
|
||||
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 3
|
||||
1.8.0a2 June 9, 2010 3
|
||||
|
||||
|
||||
|
||||
@@ -259,7 +259,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 4
|
||||
1.8.0a2 June 9, 2010 4
|
||||
|
||||
|
||||
|
||||
@@ -325,7 +325,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 5
|
||||
1.8.0a2 June 9, 2010 5
|
||||
|
||||
|
||||
|
||||
@@ -391,7 +391,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 6
|
||||
1.8.0a2 June 9, 2010 6
|
||||
|
||||
|
||||
|
||||
@@ -457,7 +457,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 7
|
||||
1.8.0a2 June 9, 2010 7
|
||||
|
||||
|
||||
|
||||
@@ -523,7 +523,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 8
|
||||
1.8.0a2 June 9, 2010 8
|
||||
|
||||
|
||||
|
||||
@@ -589,7 +589,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 9
|
||||
1.8.0a2 June 9, 2010 9
|
||||
|
||||
|
||||
|
||||
@@ -641,21 +641,21 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
convenient for simple messages where no use input is required.
|
||||
|
||||
struct sudo_conv_message {
|
||||
#define SUDO_CONV_PROMPT_ECHO_OFF 1
|
||||
#define SUDO_CONV_PROMPT_ECHO_ON 2
|
||||
#define SUDO_CONV_ERROR_MSG 3
|
||||
#define SUDO_CONV_INFO_MSG 4
|
||||
#define SUDO_CONV_PROMPT_ECHO_OFF 1 /* do not echo user input */
|
||||
#define SUDO_CONV_PROMPT_ECHO_ON 2 /* echo user input */
|
||||
#define SUDO_CONV_ERROR_MSG 3 /* error message */
|
||||
#define SUDO_CONV_INFO_MSG 4 /* informational message */
|
||||
#define SUDO_CONV_PROMPT_MASK 5 /* mask user input */
|
||||
int msg_type;
|
||||
int timeout;
|
||||
const char *msg;
|
||||
};
|
||||
|
||||
struct sudo_conv_reply {
|
||||
char *reply;
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 10
|
||||
1.8.0a2 June 9, 2010 10
|
||||
|
||||
|
||||
|
||||
@@ -664,6 +664,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
char *reply;
|
||||
};
|
||||
|
||||
typedef int (*sudo_conv_t)(int num_msgs,
|
||||
@@ -717,11 +718,10 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
The log_ttyin function receives the raw user input from the terminal
|
||||
device (note that this will include input even when echo is disabled,
|
||||
such as when a password is read). The log_ttyout function receives
|
||||
output from the pseudo-tty that is suitable for replaying the user's
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 11
|
||||
1.8.0a2 June 9, 2010 11
|
||||
|
||||
|
||||
|
||||
@@ -730,6 +730,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
output from the pseudo-tty that is suitable for replaying the user's
|
||||
session at a later time. The log_stdin, log_stdout and log_stderr
|
||||
functions are only called if the standard input, standard output or
|
||||
standard error respectively correspond to something other than a tty.
|
||||
@@ -786,8 +787,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 12
|
||||
1.8.0a2 June 9, 2010 12
|
||||
|
||||
|
||||
|
||||
@@ -853,7 +853,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 13
|
||||
1.8.0a2 June 9, 2010 13
|
||||
|
||||
|
||||
|
||||
@@ -919,7 +919,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 14
|
||||
1.8.0a2 June 9, 2010 14
|
||||
|
||||
|
||||
|
||||
@@ -985,7 +985,7 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 15
|
||||
1.8.0a2 June 9, 2010 15
|
||||
|
||||
|
||||
|
||||
@@ -1051,6 +1051,6 @@ SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m)
|
||||
|
||||
|
||||
|
||||
1.8.0a1 May 27, 2010 16
|
||||
1.8.0a2 June 9, 2010 16
|
||||
|
||||
|
||||
|
@@ -139,7 +139,7 @@
|
||||
.\" ========================================================================
|
||||
.\"
|
||||
.IX Title "SUDO_PLUGIN @mansectsu@"
|
||||
.TH SUDO_PLUGIN @mansectsu@ "May 27, 2010" "1.8.0a1" "MAINTENANCE COMMANDS"
|
||||
.TH SUDO_PLUGIN @mansectsu@ "June 9, 2010" "1.8.0a2" "MAINTENANCE COMMANDS"
|
||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||||
.\" way too many mistakes in technical documents.
|
||||
.if n .ad l
|
||||
@@ -711,12 +711,13 @@ A printf-style function is also available that can be used to display
|
||||
informational or error messages to the user, which is usually more
|
||||
convenient for simple messages where no use input is required.
|
||||
.PP
|
||||
.Vb 9
|
||||
.Vb 10
|
||||
\& struct sudo_conv_message {
|
||||
\& #define SUDO_CONV_PROMPT_ECHO_OFF 1
|
||||
\& #define SUDO_CONV_PROMPT_ECHO_ON 2
|
||||
\& #define SUDO_CONV_ERROR_MSG 3
|
||||
\& #define SUDO_CONV_INFO_MSG 4
|
||||
\& #define SUDO_CONV_PROMPT_ECHO_OFF 1 /* do not echo user input */
|
||||
\& #define SUDO_CONV_PROMPT_ECHO_ON 2 /* echo user input */
|
||||
\& #define SUDO_CONV_ERROR_MSG 3 /* error message */
|
||||
\& #define SUDO_CONV_INFO_MSG 4 /* informational message */
|
||||
\& #define SUDO_CONV_PROMPT_MASK 5 /* mask user input */
|
||||
\& int msg_type;
|
||||
\& int timeout;
|
||||
\& const char *msg;
|
||||
|
@@ -641,10 +641,11 @@ informational or error messages to the user, which is usually more
|
||||
convenient for simple messages where no use input is required.
|
||||
|
||||
struct sudo_conv_message {
|
||||
#define SUDO_CONV_PROMPT_ECHO_OFF 1
|
||||
#define SUDO_CONV_PROMPT_ECHO_ON 2
|
||||
#define SUDO_CONV_ERROR_MSG 3
|
||||
#define SUDO_CONV_INFO_MSG 4
|
||||
#define SUDO_CONV_PROMPT_ECHO_OFF 1 /* do not echo user input */
|
||||
#define SUDO_CONV_PROMPT_ECHO_ON 2 /* echo user input */
|
||||
#define SUDO_CONV_ERROR_MSG 3 /* error message */
|
||||
#define SUDO_CONV_INFO_MSG 4 /* informational message */
|
||||
#define SUDO_CONV_PROMPT_MASK 5 /* mask user input */
|
||||
int msg_type;
|
||||
int timeout;
|
||||
const char *msg;
|
||||
|
@@ -34,10 +34,11 @@
|
||||
|
||||
/* Conversation function types and defines */
|
||||
struct sudo_conv_message {
|
||||
#define SUDO_CONV_PROMPT_ECHO_OFF 1
|
||||
#define SUDO_CONV_PROMPT_ECHO_ON 2
|
||||
#define SUDO_CONV_ERROR_MSG 3
|
||||
#define SUDO_CONV_INFO_MSG 4
|
||||
#define SUDO_CONV_PROMPT_ECHO_OFF 1 /* do not echo user input */
|
||||
#define SUDO_CONV_PROMPT_ECHO_ON 2 /* echo user input */
|
||||
#define SUDO_CONV_ERROR_MSG 3 /* error message */
|
||||
#define SUDO_CONV_INFO_MSG 4 /* informational message */
|
||||
#define SUDO_CONV_PROMPT_MASK 5 /* mask user input */
|
||||
int msg_type;
|
||||
int timeout;
|
||||
const char *msg;
|
||||
|
@@ -308,9 +308,13 @@ auth_getpass(const char *prompt, int timeout, int type)
|
||||
struct sudo_conv_message msg;
|
||||
struct sudo_conv_reply repl;
|
||||
|
||||
/* Mask user input if pwfeedback set and echo is off. */
|
||||
if (type == SUDO_CONV_PROMPT_ECHO_OFF && def_pwfeedback)
|
||||
type = SUDO_CONV_PROMPT_MASK;
|
||||
|
||||
/* Call conversation function */
|
||||
memset(&msg, 0, sizeof(msg));
|
||||
msg.msg_type = SUDO_CONV_PROMPT_ECHO_OFF;
|
||||
msg.msg_type = type;
|
||||
msg.timeout = def_passwd_timeout * 60;
|
||||
msg.msg = prompt;
|
||||
memset(&repl, 0, sizeof(repl));
|
||||
|
@@ -68,7 +68,12 @@ sudo_conversation(int num_msgs, const struct sudo_conv_message msgs[],
|
||||
repl = &replies[n];
|
||||
switch (msg->msg_type) {
|
||||
case SUDO_CONV_PROMPT_ECHO_ON:
|
||||
case SUDO_CONV_PROMPT_MASK:
|
||||
if (msg->msg_type == SUDO_CONV_PROMPT_ECHO_ON)
|
||||
SET(flags, TGP_ECHO);
|
||||
else
|
||||
SET(flags, TGP_MASK);
|
||||
/* FALLTHROUGH */
|
||||
case SUDO_CONV_PROMPT_ECHO_OFF:
|
||||
/* Read the password unless interrupted. */
|
||||
pass = tgetpass(msg->msg, msg->timeout, flags);
|
||||
|
@@ -88,7 +88,7 @@
|
||||
#define TGP_ECHO 0x01 /* leave echo on when reading passwd */
|
||||
#define TGP_STDIN 0x02 /* read from stdin, not /dev/tty */
|
||||
#define TGP_ASKPASS 0x04 /* read from askpass helper program */
|
||||
#define TGP_FEEDBACK 0x08 /* visual feedback during input */
|
||||
#define TGP_MASK 0x08 /* mask user input when reading */
|
||||
|
||||
struct user_details {
|
||||
uid_t uid;
|
||||
|
@@ -120,9 +120,9 @@ restart:
|
||||
* If we are using a tty but are not the foreground pgrp this will
|
||||
* generate SIGTTOU, so do it *before* installing the signal handlers.
|
||||
*/
|
||||
if (ISSET(flags, TGP_FEEDBACK))
|
||||
if (ISSET(flags, TGP_MASK))
|
||||
neednl = term_cbreak(input);
|
||||
else
|
||||
else if (!ISSET(flags, TGP_ECHO))
|
||||
neednl = term_noecho(input);
|
||||
|
||||
/*
|
||||
@@ -147,7 +147,7 @@ restart:
|
||||
|
||||
if (timeout > 0)
|
||||
alarm(timeout);
|
||||
pass = getln(input, buf, sizeof(buf), ISSET(flags, TGP_FEEDBACK));
|
||||
pass = getln(input, buf, sizeof(buf), ISSET(flags, TGP_MASK));
|
||||
alarm(0);
|
||||
save_errno = errno;
|
||||
|
||||
|
Reference in New Issue
Block a user