X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=taint.c;h=7914e64ec10b00f4f8cca1ffd0202eb5ee600851;hb=caf25f3be4a66b8fbb51db2cfdfa658f6b9704e7;hp=e5f6f8aaa56b6cd8f990f508229050156991c67b;hpb=cbfa9890bcdf8102686f127e6107a72e887a941e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/taint.c b/taint.c index e5f6f8a..7914e64 100644 --- a/taint.c +++ b/taint.c @@ -1,3 +1,12 @@ +/* taint.c + * + * Copyright (c) 1997-2002, Larry Wall + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + * + */ + /* * "...we will have peace, when you and all your works have perished--and * the works of your dark master to whom you would deliver us. You are a @@ -13,9 +22,26 @@ Perl_taint_proper(pTHX_ const char *f, const char *s) { char *ug; -#ifdef HAS_SETEUID - DEBUG_u(PerlIO_printf(Perl_debug_log, - "%s %d %"Uid_t_f" %"Uid_t_f"\n", s, PL_tainted, (long unsigned int)PL_uid, (long unsigned int)PL_euid)); +#if defined(HAS_SETEUID) && defined(DEBUGGING) +# if Uid_t_size == 1 + { + UV uid = PL_uid; + UV euid = PL_euid; + + 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; + + DEBUG_u(PerlIO_printf(Perl_debug_log, + "%s %d %"IVdf" %"IVdf"\n", + s, PL_tainted, uid, euid)); + } +# endif #endif if (PL_tainted) { @@ -25,12 +51,17 @@ Perl_taint_proper(pTHX_ const char *f, const char *s) ug = " while running setuid"; else if (PL_egid != PL_gid) ug = " while running setgid"; - else + else if (PL_taint_warn) + ug = " while running with -t switch"; + else ug = " while running with -T switch"; - if (!PL_unsafe) - Perl_croak(aTHX_ f, s, ug); - else if (ckWARN(WARN_TAINT)) - Perl_warner(aTHX_ WARN_TAINT, f, s, ug); + if (PL_unsafe || PL_taint_warn) { + if(ckWARN(WARN_TAINT)) + Perl_warner(aTHX_ packWARN(WARN_TAINT), f, s, ug); + } + else { + Perl_croak(aTHX_ f, s, ug); + } } }