]> granicus.if.org Git - sudo/commitdiff
Only set MODE_PRESERVE_ENV when preserving the entire environment.
authorTodd C. Miller <Todd.Miller@sudo.ws>
Wed, 16 May 2018 15:10:43 +0000 (09:10 -0600)
committerTodd C. Miller <Todd.Miller@sudo.ws>
Wed, 16 May 2018 15:10:43 +0000 (09:10 -0600)
Fixes a problem introduced in 1.8.23 where "sudo -i" could not be
used in conjunction with --preserve-env=VARIABLE.  Bug #835

src/parse_args.c

index d1f5e75b16a1d3044fa342fa3f9f999c255b0520..91820110204b40503e3d6bc9792e30695436f0f4 100644 (file)
@@ -330,14 +330,15 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv,
                case 'E':
                    /*
                     * Optional argument is a comma-separated list of
-                    * environment variables to preserve.  If not present,
-                    * preserve everything.
+                    * environment variables to preserve.
+                    * If not present, preserve everything.
                     */
-                   if (optarg == NULL)
+                   if (optarg == NULL) {
                        sudo_settings[ARG_PRESERVE_ENVIRONMENT].value = "true";
-                   else
+                       SET(flags, MODE_PRESERVE_ENV);
+                   } else {
                        parse_env_list(&extra_env, optarg);
-                   SET(flags, MODE_PRESERVE_ENV);
+                   }
                    break;
                case 'e':
                    if (mode && mode != MODE_EDIT)