From: Nicholas Clark Date: Fri, 3 Feb 2006 22:18:45 +0000 (+0000) Subject: The MSDOS-only call to moreswitches will never reach forbid_setid, so X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a8e48fe22d03f17d66e4765e2eef8807740ca1fc;p=p5sagit%2Fp5-mst-13.2.git The MSDOS-only call to moreswitches will never reach forbid_setid, so it can have a parameter of -1 without changing any behaviour. I see no reason to forbid "command line" switches when they are actually coming from the #! line of the script itself (as read by perl) as they must have been written by the owner of the script, rather than being crafted by the user manipulating the command line, and therefore cannot be subverted. (Or alternatively, can be subverted as easily as the rest of the script, and we're permitting *that* to be run) p4raw-id: //depot/perl@27074 --- diff --git a/perl.c b/perl.c index 51ad36d..09e49c6 100644 --- a/perl.c +++ b/perl.c @@ -2009,7 +2009,7 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) else if (scriptname == NULL) { #ifdef MSDOS if ( PerlLIO_isatty(PerlIO_fileno(PerlIO_stdin())) ) - moreswitches("h", suidscript); + moreswitches("h", -1); #endif scriptname = "-"; } @@ -4265,7 +4265,7 @@ S_find_beginning(pTHX_ const int suidscript) while (isDIGIT(s2[-1]) || s2[-1] == '-' || s2[-1] == '.' || s2[-1] == '_') s2--; if (strnEQ(s2-4,"perl",4)) - while ((s = moreswitches(s, suidscript))) + while ((s = moreswitches(s, -1))) ; } #ifdef MACOS_TRADITIONAL