X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=taint.c;h=ed1af7453b1d9ffb62d56e748140f068996a3d4c;hb=7581d28c2d4dcb4f3b408247518e6164f6b89764;hp=f21aedcdb4bdb25a7abe98c313c847f7d2d014b6;hpb=73d840c0daa603a18a29260159881d4ef6772d73;p=p5sagit%2Fp5-mst-13.2.git diff --git a/taint.c b/taint.c index f21aedc..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) @@ -74,8 +74,8 @@ Perl_taint_env(pTHX) { SV** svp; MAGIC* mg; - const char** e; - static const char* misc_env[] = { + const char* const *e; + static const char* const misc_env[] = { "IFS", /* most shells' inter-field separators */ "CDPATH", /* ksh dain bramage #1 */ "ENV", /* ksh dain bramage #2 */ @@ -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: + */