X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=taint.c;h=ed1af7453b1d9ffb62d56e748140f068996a3d4c;hb=7581d28c2d4dcb4f3b408247518e6164f6b89764;hp=03bdedc3d57e6a6f68f3350948c358104fdf4289;hpb=27da23d53ccce622bc51822f59df8def79b4df95;p=p5sagit%2Fp5-mst-13.2.git diff --git a/taint.c b/taint.c index 03bdedc..ed1af74 100644 --- a/taint.c +++ b/taint.c @@ -24,24 +24,22 @@ void Perl_taint_proper(pTHX_ const char *f, const char *s) { - const char *ug; - #if defined(HAS_SETEUID) && defined(DEBUGGING) # if Uid_t_size == 1 { - UV uid = PL_uid; - UV euid = PL_euid; + const UV uid = PL_uid; + const UV euid = PL_euid; - DEBUG_u(PerlIO_printf(Perl_debug_log, + DEBUG_u(PerlIO_printf(Perl_debug_log, "%s %d %"UVuf" %"UVuf"\n", s, PL_tainted, uid, euid)); } # else { - IV uid = PL_uid; - IV euid = PL_euid; + const IV uid = PL_uid; + const IV euid = PL_euid; - DEBUG_u(PerlIO_printf(Perl_debug_log, + DEBUG_u(PerlIO_printf(Perl_debug_log, "%s %d %"IVdf" %"IVdf"\n", s, PL_tainted, uid, euid)); } @@ -49,6 +47,8 @@ Perl_taint_proper(pTHX_ const char *f, const char *s) #endif if (PL_tainted) { + const char *ug; + if (!f) f = PL_no_security; if (PL_euid != PL_uid) @@ -91,7 +91,7 @@ Perl_taint_env(pTHX) if (!GvHV(PL_envgv) || !(SvRMAGICAL(GvHV(PL_envgv)) && mg_find((SV*)GvHV(PL_envgv), PERL_MAGIC_env))) { const bool was_tainted = PL_tainted; - const char *name = GvENAME(PL_envgv); + const char * const name = GvENAME(PL_envgv); PL_tainted = TRUE; if (strEQ(name,"ENV")) /* hash alias */ @@ -107,11 +107,12 @@ Perl_taint_env(pTHX) { int i = 0; char name[10 + TYPE_DIGITS(int)] = "DCL$PATH"; + STRLEN len = 8; /* strlen(name) */ while (1) { if (i) - (void)sprintf(name,"DCL$PATH;%d", i); - svp = hv_fetch(GvHVn(PL_envgv), name, strlen(name), FALSE); + len = my_sprintf(name,"DCL$PATH;%d", i); + svp = hv_fetch(GvHVn(PL_envgv), name, len, FALSE); if (!svp || *svp == &PL_sv_undef) break; if (SvTAINTED(*svp)) { @@ -143,10 +144,10 @@ Perl_taint_env(pTHX) /* tainted $TERM is okay if it contains no metachars */ svp = hv_fetch(GvHVn(PL_envgv),"TERM",4,FALSE); if (svp && *svp && SvTAINTED(*svp)) { - STRLEN n_a; + STRLEN len; const bool was_tainted = PL_tainted; - char *t = SvPV(*svp, n_a); - char *e = t + n_a; + const char *t = SvPV_const(*svp, len); + const char * const e = t + len; PL_tainted = was_tainted; if (t < e && isALNUM(*t)) t++; @@ -160,10 +161,20 @@ Perl_taint_env(pTHX) #endif /* !VMS */ for (e = misc_env; *e; e++) { - svp = hv_fetch(GvHVn(PL_envgv), *e, strlen(*e), FALSE); + SV ** const svp = hv_fetch(GvHVn(PL_envgv), *e, strlen(*e), FALSE); if (svp && *svp != &PL_sv_undef && SvTAINTED(*svp)) { TAINT; taint_proper("Insecure $ENV{%s}%s", *e); } } } + +/* + * Local variables: + * c-indentation-style: bsd + * c-basic-offset: 4 + * indent-tabs-mode: t + * End: + * + * ex: set ts=8 sts=4 sw=4 noet: + */