]> granicus.if.org Git - sudo/commitdiff
Allow the -k flag to be used along with the -i and -s flags.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 23 May 2012 16:50:37 +0000 (12:50 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 23 May 2012 16:50:37 +0000 (12:50 -0400)
--HG--
branch : 1.7

parse_args.c

index d6fa8426fa0b4165f47a0e6271642f335006e189..33412f978b7954c9e9651ad835bb889d8859da2e 100644 (file)
@@ -251,13 +251,15 @@ parse_args(argc, argv)
 
     if (!mode) {
        /* Defer -k mode setting until we know whether it is a flag or not */
-       if (ISSET(flags, MODE_INVALIDATE) && NewArgc == 0) {
-           mode = MODE_INVALIDATE;     /* -k by itself */
-           CLR(flags, MODE_INVALIDATE);
-           valid_flags = 0;
-       } else {
-           mode = MODE_RUN;            /* running a command */
+       if (ISSET(flags, MODE_INVALIDATE)) {
+           if (NewArgc == 0 && !(flags & (MODE_SHELL|MODE_LOGIN_SHELL))) {
+               mode = MODE_INVALIDATE; /* -k by itself */
+               CLR(flags, MODE_INVALIDATE);
+               valid_flags = 0;
+           }
        }
+       if (!mode)
+           mode = MODE_RUN;            /* running a command */
     }
 
     if (NewArgc > 0 && mode == MODE_LIST)