/* taint.c
*
- * Copyright (c) 1997-2002, Larry Wall
+ * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ * 2000, 2001, 2002, by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
ug = " while running with -T switch";
if (PL_unsafe || PL_taint_warn) {
if(ckWARN(WARN_TAINT))
- Perl_warner(aTHX_ WARN_TAINT, f, s, ug);
+ Perl_warner(aTHX_ packWARN(WARN_TAINT), f, s, ug);
}
else {
Perl_croak(aTHX_ f, s, ug);
NULL
};
- if (!PL_envgv)
+ /* Don't bother if there's no %ENV hash */
+ if (!PL_envgv || !GvHV(PL_envgv))
return;
#ifdef VMS
TAINT;
taint_proper("Insecure %s%s", "$ENV{DCL$PATH}");
}
- if ((mg = mg_find(*svp, PERL_MAGIC_envelem)) && MgTAINTEDDIR(mg)) {
+ if (SvMAGICAL(*svp)
+ && (mg = mg_find(*svp, PERL_MAGIC_envelem))
+ && MgTAINTEDDIR(mg)) {
TAINT;
taint_proper("Insecure directory in %s%s", "$ENV{DCL$PATH}");
}
TAINT;
taint_proper("Insecure %s%s", "$ENV{PATH}");
}
- if ((mg = mg_find(*svp, PERL_MAGIC_envelem)) && MgTAINTEDDIR(mg)) {
+ if (SvMAGICAL(*svp)
+ && (mg = mg_find(*svp, PERL_MAGIC_envelem))
+ && MgTAINTEDDIR(mg)) {
TAINT;
taint_proper("Insecure directory in %s%s", "$ENV{PATH}");
}
PL_tainted = was_tainted;
if (t < e && isALNUM(*t))
t++;
- while (t < e && (isALNUM(*t) || *t == '-' || *t == ':'))
+ while (t < e && (isALNUM(*t) || strchr("-_.+", *t)))
t++;
if (t < e) {
TAINT;