--- rxvt-unicode/src/main.C 2006/01/08 08:43:11 1.167 +++ rxvt-unicode/src/main.C 2006/01/11 03:13:26 1.171 @@ -53,6 +53,16 @@ static gid_t saved_egid; #endif +bool +rxvt_tainted () +{ +#if (defined(HAVE_SETEUID) || defined(HAVE_SETREUID)) && !defined(__CYGWIN32__) + return getuid () != saved_euid || getgid () != saved_egid; +#else + return false; +#endif +} + vector rxvt_term::termlist; static char curlocale[128], savelocale[128]; @@ -68,7 +78,7 @@ return true; } -bool +void rxvt_push_locale (const char *locale) { strcpy (savelocale, curlocale); @@ -281,9 +291,6 @@ #if OFF_FOCUS_FADING delete pix_colors_unfocused; #endif -#if USE_XGETDEFAULT - XrmDestroyDatabase (xrmdatabase); -#endif displays.put (display); @@ -474,6 +481,7 @@ rxvt_term::init (int argc, const char *const *argv) { SET_R (this); + TEMP_ENV; // few things in X do not call setlocale :( set_locale (""); @@ -504,24 +512,20 @@ || (rs[Rs_perl_ext_2] && *rs[Rs_perl_ext_2]) || (rs[Rs_perl_eval] && *rs[Rs_perl_eval])) { - bool tainted = false; - #if (defined(HAVE_SETEUID) || defined(HAVE_SETREUID)) && !defined(__CYGWIN32__) // ignore some perl-related arguments if some bozo installed us set[ug]id - if (getuid () != saved_euid || getgid () != saved_egid) + if (rxvt_tainted ()) { - tainted = true; - if ((rs[Rs_perl_lib] && *rs[Rs_perl_lib]) || (rs[Rs_perl_eval] && *rs[Rs_perl_eval])) { rxvt_warn ("running with elevated privileges: ignoring perl-lib and perl-eval.\n"); - rs[Rs_perl_lib] = 0; - rs[Rs_perl_eval] = "our $tainted = 1"; + rs[Rs_perl_lib] = 0; + rs[Rs_perl_eval] = 0; } } #endif - rxvt_perl.init (tainted); + rxvt_perl.init (); HOOK_INVOKE ((this, HOOK_INIT, DT_END)); } #endif @@ -532,7 +536,7 @@ init_xlocale (); - scr_reset (); /* initialize screen */ + scr_reset (); // initialize screen #if 0 XSynchronize (disp, True); @@ -641,9 +645,7 @@ // TODO: handle this with exceptions and tolerate the memory loss XSetIOErrorHandler (rxvt_xioerror_handler); -#ifdef USE_XGETDEFAULT XrmInitialize (); -#endif } /* ------------------------------------------------------------------------- * @@ -1447,6 +1449,8 @@ char **s; XIMStyles *xim_styles; + TEMP_ENV; + if (! ((p = XSetLocaleModifiers (modifiers)) && *p)) return false;