pp_next/pp_last/pp_redo problems
[p5sagit/p5-mst-13.2.git] / taint.c
diff --git a/taint.c b/taint.c
index 4c031de..655cec8 100644 (file)
--- a/taint.c
+++ b/taint.c
@@ -17,6 +17,8 @@ taint_proper(const char *f, char *s)
             "%s %d %d %d\n", s, PL_tainted, PL_uid, PL_euid));
 
     if (PL_tainted) {
+       if (!f)
+           f = PL_no_security;
        if (PL_euid != PL_uid)
            ug = " while running setuid";
        else if (PL_egid != PL_gid)
@@ -25,8 +27,8 @@ taint_proper(const char *f, char *s)
            ug = " while running with -T switch";
        if (!PL_unsafe)
            croak(f, s, ug);
-       else if (PL_dowarn)
-           warn(f, s, ug);
+       else if (ckWARN(WARN_TAINT))
+           warner(WARN_TAINT, f, s, ug);
     }
 }
 
@@ -87,9 +89,10 @@ taint_env(void)
     svp = hv_fetch(GvHVn(PL_envgv),"TERM",4,FALSE);
     if (svp && *svp && SvTAINTED(*svp)) {
        dTHR;   /* just for taint */
+       STRLEN n_a;
        bool was_tainted = PL_tainted;
-       char *t = SvPV(*svp, PL_na);
-       char *e = t + PL_na;
+       char *t = SvPV(*svp, n_a);
+       char *e = t + n_a;
        PL_tainted = was_tainted;
        if (t < e && isALNUM(*t))
            t++;