*** empty log message ***
authorroot <root>
Sun, 8 Jan 2006 08:49:20 +0000 (08:49 +0000)
committerroot <root>
Sun, 8 Jan 2006 08:49:20 +0000 (08:49 +0000)
src/main.C
src/rxvtlib.h.in
src/rxvtperl.h
src/rxvtperl.xs

index 90ea32c479ee246a8278d785f1c62be36e7aea2c..dfaab1572e277712ebac13cc021fffa685688ba9 100644 (file)
@@ -53,6 +53,16 @@ static uid_t saved_euid;
 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 *> rxvt_term::termlist;
 
 static char curlocale[128], savelocale[128];
@@ -504,24 +514,20 @@ rxvt_term::init (int argc, const char *const *argv)
       || (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
index 567674ac1156c0a71a20610b3a01d8b30a5c06a4..54a9f26aa3cbde24b629e50eb4fc78e929a8b3b8 100644 (file)
@@ -267,6 +267,7 @@ struct rxvt_vars : TermWin_t {
 };
 
 void rxvt_init ();
+bool rxvt_tainted ();
 
 #endif                          /* _RXVTLIB_H_ */
 
index 747cf1039697b10c36e39d139ff206b61d420ea2..bf69305d952a231e8800f005155b5a3dede23b05 100644 (file)
@@ -41,7 +41,7 @@ struct rxvt_perl_interp
 
   bool should_invoke[HOOK_NUM];
 
-  void init (bool tainted);
+  void init ();
   bool invoke (rxvt_term *term, hook_type htype, ...);
   void line_update (rxvt_term *term);
 };
index 530a67f7a7b5a983c252a324a2392a7ac2938963..471a9e1df2c01df4e331a0280d8b7150cd3a7f38 100644 (file)
@@ -408,20 +408,20 @@ rxvt_perl_interp::~rxvt_perl_interp ()
 }
 
 void
-rxvt_perl_interp::init (bool tainted)
+rxvt_perl_interp::init ()
 {
   if (!perl)
     {
       char *argv[] = {
         "",
-        "-edo '" LIBDIR "/urxvt.pm' or ($@ and die $@) or exit 1",
         "-T",
+        "-edo '" LIBDIR "/urxvt.pm' or ($@ and die $@) or exit 1",
       };
 
       perl = perl_alloc ();
       perl_construct (perl);
 
-      if (perl_parse (perl, xs_init, 2 + !!tainted, argv, (char **)NULL)
+      if (perl_parse (perl, xs_init, 3, argv, (char **)NULL)
           || perl_run (perl))
         {
           rxvt_warn ("unable to initialize perl-interpreter, continuing without.\n");