Imported Upstream version 1.8.2
[debian/sudo] / plugins / sudoers / env.c
index 9d1201fcf32755d4ef38db531b94e6e88c04c7ca..6d6571899e924058a97bd91310e9db8dec35a8c5 100644 (file)
@@ -256,7 +256,7 @@ sudo_setenv(const char *var, const char *val, int dupcheck)
        strlcat(estring, "=", esize) >= esize ||
        strlcat(estring, val, esize) >= esize) {
 
-       errorx(1, "internal error, sudo_setenv() overflow");
+       errorx(1, _("internal error, sudo_setenv() overflow"));
     }
     sudo_putenv(estring, dupcheck, TRUE);
 }
@@ -286,7 +286,7 @@ sudo_putenv(char *str, int dupcheck, int overwrite)
 
 #ifdef ENV_DEBUG
     if (env.envp[env.env_len] != NULL)
-       errorx(1, "sudo_putenv: corrupted envp, len mismatch");
+       errorx(1, _("sudo_putenv: corrupted envp, length mismatch"));
 #endif
 
     if (dupcheck) {
@@ -390,6 +390,10 @@ matches_env_keep(const char *var)
     size_t len;
     int iswild, keepit = FALSE;
 
+    /* Preserve SHELL variable for "sudo -s". */
+    if (ISSET(sudo_mode, MODE_SHELL) && strncmp(var, "SHELL=", 6) == 0)
+       return TRUE;
+
     for (cur = def_env_keep; cur; cur = cur->next) {
        len = strlen(cur->value);
        /* Deal with '*' wildcard */
@@ -691,7 +695,7 @@ validate_env_vars(char * const env_vars[])
     if (bad != NULL) {
        bad[blen - 2] = '\0';           /* remove trailing ", " */
        log_error(NO_MAIL,
-           "sorry, you are not allowed to set the following environment variables: %s", bad);
+           _("sorry, you are not allowed to set the following environment variables: %s"), bad);
        /* NOTREACHED */
        efree(bad);
     }