]> granicus.if.org Git - sudo/commitdiff
Add -B option to ring the bell before the password prompt.
authorTodd C. Miller <Todd.Miller@sudo.ws>
Mon, 27 May 2019 14:49:43 +0000 (08:49 -0600)
committerTodd C. Miller <Todd.Miller@sudo.ws>
Mon, 27 May 2019 14:49:43 +0000 (08:49 -0600)
doc/sudo.cat
doc/sudo.man.in
doc/sudo.mdoc.in
src/parse_args.c
src/sudo.h
src/tgetpass.c

index cd505a22b18575e69d579de64d990dc7684a5fe2..32a808ac953f1ba3f08b4d00640bf1716595a77a 100644 (file)
@@ -5,13 +5,13 @@ N\bNA\bAM\bME\bE
 
 S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
      s\bsu\bud\bdo\bo -\b-h\bh | -\b-K\bK | -\b-k\bk | -\b-V\bV
-     s\bsu\bud\bdo\bo -\b-v\bv [-\b-A\bAk\bkn\bnS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt] [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-u\bu _\bu_\bs_\be_\br]
-     s\bsu\bud\bdo\bo -\b-l\bl [-\b-A\bAk\bkn\bnS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt] [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-U\bU _\bu_\bs_\be_\br]
+     s\bsu\bud\bdo\bo -\b-v\bv [-\b-A\bAB\bBk\bkn\bnS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt] [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-u\bu _\bu_\bs_\be_\br]
+     s\bsu\bud\bdo\bo -\b-l\bl [-\b-A\bAB\bBk\bkn\bnS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt] [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-U\bU _\bu_\bs_\be_\br]
           [-\b-u\bu _\bu_\bs_\be_\br] [_\bc_\bo_\bm_\bm_\ba_\bn_\bd]
-     s\bsu\bud\bdo\bo [-\b-A\bAb\bbE\bEH\bHn\bnP\bPS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-C\bC _\bn_\bu_\bm] [-\b-c\bc _\bc_\bl_\ba_\bs_\bs] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt]
+     s\bsu\bud\bdo\bo [-\b-A\bAB\bBb\bbE\bEH\bHn\bnP\bPS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-C\bC _\bn_\bu_\bm] [-\b-c\bc _\bc_\bl_\ba_\bs_\bs] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt]
           [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-r\br _\br_\bo_\bl_\be] [-\b-t\bt _\bt_\by_\bp_\be] [-\b-T\bT _\bt_\bi_\bm_\be_\bo_\bu_\bt] [-\b-u\bu _\bu_\bs_\be_\br] [_\bV_\bA_\bR=_\bv_\ba_\bl_\bu_\be]
           [-\b-i\bi | -\b-s\bs] [_\bc_\bo_\bm_\bm_\ba_\bn_\bd]
-     s\bsu\bud\bdo\boe\bed\bdi\bit\bt [-\b-A\bAk\bkn\bnS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-C\bC _\bn_\bu_\bm] [-\b-c\bc _\bc_\bl_\ba_\bs_\bs] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt]
+     s\bsu\bud\bdo\boe\bed\bdi\bit\bt [-\b-A\bAB\bBk\bkn\bnS\bS] [-\b-a\ba _\bt_\by_\bp_\be] [-\b-C\bC _\bn_\bu_\bm] [-\b-c\bc _\bc_\bl_\ba_\bs_\bs] [-\b-g\bg _\bg_\br_\bo_\bu_\bp] [-\b-h\bh _\bh_\bo_\bs_\bt]
               [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-T\bT _\bt_\bi_\bm_\be_\bo_\bu_\bt] [-\b-u\bu _\bu_\bs_\be_\br] _\bf_\bi_\bl_\be _\b._\b._\b.
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
@@ -72,6 +72,10 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
                  _\b/_\be_\bt_\bc_\b/_\bl_\bo_\bg_\bi_\bn_\b._\bc_\bo_\bn_\bf.  This option is only available on systems
                  that support BSD authentication.
 
+     -\b-B\bB, -\b--\b-b\bbe\bel\bll\bl  Ring the bell as part of the password promp when a terminal
+                 is present.  This option has no effect if an askpass program
+                 is used.
+
      -\b-b\bb, -\b--\b-b\bba\bac\bck\bkg\bgr\bro\bou\bun\bnd\bd
                  Run the given command in the background.  Note that it is not
                  possible to use shell job control to manipulate background
@@ -738,4 +742,4 @@ D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
      file distributed with s\bsu\bud\bdo\bo or https://www.sudo.ws/license.html for
      complete details.
 
-Sudo 1.8.28                    November 25, 2018                   Sudo 1.8.28
+Sudo 1.8.28                      May 27, 2019                      Sudo 1.8.28
index c373db95b5efe34558233dbe80f784f449fafce8..a3e7fdd15f3750727ea9597ad58ac52aa6fa5e10 100644 (file)
@@ -2,7 +2,7 @@
 .\"
 .\" SPDX-License-Identifier: ISC
 .\"
-.\" Copyright (c) 1994-1996, 1998-2005, 2007-2018
+.\" Copyright (c) 1994-1996, 1998-2005, 2007-2019
 .\"    Todd C. Miller <Todd.Miller@sudo.ws>
 .\"
 .\" Permission to use, copy, modify, and distribute this software for any
@@ -25,7 +25,7 @@
 .nr BA @BAMAN@
 .nr LC @LCMAN@
 .nr PS @PSMAN@
-.TH "SUDO" "@mansectsu@" "November 25, 2018" "Sudo @PACKAGE_VERSION@" "System Manager's Manual"
+.TH "SUDO" "@mansectsu@" "May 27, 2019" "Sudo @PACKAGE_VERSION@" "System Manager's Manual"
 .nh
 .if n .ad l
 .SH "NAME"
@@ -41,7 +41,7 @@
 .HP 5n
 \fBsudo\fR
 \fB\-v\fR
-[\fB\-AknS\fR]
+[\fB\-ABknS\fR]
 .if \n(BA [\fB\-a\fR\ \fItype\fR]
 [\fB\-g\fR\ \fIgroup\fR]
 [\fB\-h\fR\ \fIhost\fR]
@@ -51,7 +51,7 @@
 .HP 5n
 \fBsudo\fR
 \fB\-l\fR
-[\fB\-AknS\fR]
+[\fB\-ABknS\fR]
 .if \n(BA [\fB\-a\fR\ \fItype\fR]
 [\fB\-g\fR\ \fIgroup\fR]
 [\fB\-h\fR\ \fIhost\fR]
@@ -62,7 +62,7 @@
 .br
 .HP 5n
 \fBsudo\fR
-[\fB\-AbEHnPS\fR]
+[\fB\-ABbEHnPS\fR]
 .if \n(BA [\fB\-a\fR\ \fItype\fR]
 [\fB\-C\fR\ \fInum\fR]
 .if \n(LC [\fB\-c\fR\ \fIclass\fR]
@@ -79,7 +79,7 @@
 .br
 .HP 9n
 \fBsudoedit\fR
-[\fB\-AknS\fR]
+[\fB\-ABknS\fR]
 .if \n(BA [\fB\-a\fR\ \fItype\fR]
 [\fB\-C\fR\ \fInum\fR]
 .if \n(LC [\fB\-c\fR\ \fIclass\fR]
@@ -213,6 +213,10 @@ BSD
 authentication.
 .\}
 .TP 12n
+\fB\-B\fR, \fB\--bell\fR
+Ring the bell as part of the password promp when a terminal is present.
+This option has no effect if an askpass program is used.
+.TP 12n
 \fB\-b\fR, \fB\--background\fR
 Run the given command in the background.
 Note that it is not possible to use shell job control to manipulate
index ff06107356bff7552e151a48ef0d22eff8a1afbd..e605ee2524599717b10a9387cf01eb04430b4b41 100644 (file)
@@ -1,7 +1,7 @@
 .\"
 .\" SPDX-License-Identifier: ISC
 .\"
-.\" Copyright (c) 1994-1996, 1998-2005, 2007-2018
+.\" Copyright (c) 1994-1996, 1998-2005, 2007-2019
 .\"    Todd C. Miller <Todd.Miller@sudo.ws>
 .\"
 .\" Permission to use, copy, modify, and distribute this software for any
@@ -24,7 +24,7 @@
 .nr BA @BAMAN@
 .nr LC @LCMAN@
 .nr PS @PSMAN@
-.Dd November 25, 2018
+.Dd May 27, 2019
 .Dt SUDO @mansectsu@
 .Os Sudo @PACKAGE_VERSION@
 .Sh NAME
@@ -36,7 +36,7 @@
 .Fl h | K | k | V
 .Nm sudo
 .Fl v
-.Op Fl AknS
+.Op Fl ABknS
 .if \n(BA \{\
 .Op Fl a Ar type
 .\}
@@ -46,7 +46,7 @@
 .Op Fl u Ar user
 .Nm sudo
 .Fl l
-.Op Fl AknS
+.Op Fl ABknS
 .if \n(BA \{\
 .Op Fl a Ar type
 .\}
@@ -57,7 +57,7 @@
 .Op Fl u Ar user
 .Op Ar command
 .Nm sudo
-.Op Fl AbEHnPS
+.Op Fl ABbEHnPS
 .if \n(BA \{\
 .Op Fl a Ar type
 .\}
@@ -78,7 +78,7 @@
 .Op Fl i | s
 .Op Ar command
 .Nm sudoedit
-.Op Fl AknS
+.Op Fl ABknS
 .if \n(BA \{\
 .Op Fl a Ar type
 .\}
@@ -208,6 +208,9 @@ This option is only available on systems that support
 .Bx
 authentication.
 .\}
+.It Fl B , -bell
+Ring the bell as part of the password promp when a terminal is present.
+This option has no effect if an askpass program is used.
 .It Fl b , -background
 Run the given command in the background.
 Note that it is not possible to use shell job control to manipulate
index 8efb6ce92202e6dc80884bae5ab77eb0df67279e..6836bdbbbaa440eeb76f9f6b0e92abfe777fce33 100644 (file)
@@ -133,11 +133,12 @@ struct environment {
  * Note that we must disable arg permutation to support setting environment
  * variables and to better support the optional arg of the -h flag.
  */
-static const char short_opts[] =  "+Aa:bC:c:D:Eeg:Hh::iKklnPp:r:SsT:t:U:u:Vv";
+static const char short_opts[] =  "+Aa:BbC:c:D:Eeg:Hh::iKklnPp:r:SsT:t:U:u:Vv";
 static struct option long_opts[] = {
     { "askpass",       no_argument,            NULL,   'A' },
     { "auth-type",     required_argument,      NULL,   'a' },
     { "background",    no_argument,            NULL,   'b' },
+    { "bell",          no_argument,            NULL,   'B' },
     { "close-from",    required_argument,      NULL,   'C' },
     { "login-class",   required_argument,      NULL,   'c' },
     { "preserve-env",  optional_argument,      NULL,   'E' },
@@ -317,6 +318,9 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv,
                case 'b':
                    SET(flags, MODE_BACKGROUND);
                    break;
+               case 'B':
+                   SET(tgetpass_flags, TGP_BELL);
+                   break;
                case 'C':
                    if (strtonum(optarg, 3, INT_MAX, NULL) == 0) {
                        sudo_warnx(U_("the argument to -C must be a number greater than or equal to 3"));
@@ -711,6 +715,8 @@ help(void)
 #endif
     sudo_lbuf_append(&lbuf, "  -b, --background              %s\n",
        _("run command in the background"));
+    sudo_lbuf_append(&lbuf, "  -B, --bell                    %s\n",
+       _("ring bell when prompting"));
     sudo_lbuf_append(&lbuf, "  -C, --close-from=num          %s\n",
        _("close all file descriptors >= num"));
 #ifdef HAVE_LOGIN_CAP_H
index 6f8eded8875a34e6d7d46c1191a3de1078812a2a..cf2d8b9101477a6ad87de276d6b2430e812f8f8d 100644 (file)
@@ -86,6 +86,7 @@
 #define TGP_ASKPASS    0x04            /* read from askpass helper program */
 #define TGP_MASK       0x08            /* mask user input when reading */
 #define TGP_NOECHO_TRY 0x10            /* turn off echo if possible */
+#define TGP_BELL       0x20            /* bell on password prompt */
 
 /* name/value pairs for command line settings. */
 struct sudo_settings {
index a59bc468d58048ab4d9f0c15e3d488696e604d53..394a645066c1f7938b4b64ff0d3c61bc66d9ecda 100644 (file)
@@ -204,6 +204,11 @@ restart:
     (void) sigaction(SIGTTIN, &sa, &savettin);
     (void) sigaction(SIGTTOU, &sa, &savettou);
 
+    if (ISSET(flags, TGP_BELL) && output != STDERR_FILENO) {
+       /* Ring the bell if requested and there is a tty. */
+       if (write(output, "\a", 1) == -1)
+           goto restore;
+    }
     if (prompt) {
        if (write(output, prompt, strlen(prompt)) == -1)
            goto restore;