Ap |void |mini_mktime |NN struct tm *pm
p |OP* |mod |NULLOK OP* o|I32 type
p |int |mode_from_discipline|NULLOK SV* discp
-Ap |char* |moreswitches |NN char* s|int suidscript
+Ap |char* |moreswitches |NN char* s
p |OP* |my |NN OP* o
Ap |NV |my_atof |NN const char *s
#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY))
#define mod(a,b) Perl_mod(aTHX_ a,b)
#define mode_from_discipline(a) Perl_mode_from_discipline(aTHX_ a)
#endif
-#define moreswitches(a,b) Perl_moreswitches(aTHX_ a,b)
+#define moreswitches(a) Perl_moreswitches(aTHX_ a)
#ifdef PERL_CORE
#define my(a) Perl_my(aTHX_ a)
#endif
case 'X':
case 'w':
case 'A':
- if ((s = moreswitches(s, -1)))
+ if ((s = moreswitches(s)))
goto reswitch;
break;
PL_tainting = TRUE;
}
} else {
- moreswitches(d, -1);
+ moreswitches(d);
}
}
}
else if (scriptname == NULL) {
#ifdef MSDOS
if ( PerlLIO_isatty(PerlIO_fileno(PerlIO_stdin())) )
- moreswitches("h", -1);
+ moreswitches("h");
#endif
scriptname = "-";
}
/* This routine handles any switches that can be given during run */
char *
-Perl_moreswitches(pTHX_ char *s, const int suidscript)
+Perl_moreswitches(pTHX_ char *s)
{
dVAR;
UV rschar;
s++;
return s;
case 'd':
- forbid_setid('d', suidscript);
+ forbid_setid('d', -1);
s++;
/* -dt indicates to the debugger that threads will be used */
case 'D':
{
#ifdef DEBUGGING
- forbid_setid('D', suidscript);
+ forbid_setid('D', -1);
s++;
PL_debug = get_debug_opts( (const char **)&s, 1) | DEBUG_TOP_FLAG;
#else /* !DEBUGGING */
}
return s;
case 'I': /* -I handled both here and in parse_body() */
- forbid_setid('I', suidscript);
+ forbid_setid('I', -1);
++s;
while (*s && isSPACE(*s))
++s;
}
return s;
case 'A':
- forbid_setid('A', suidscript);
+ forbid_setid('A', -1);
if (!PL_preambleav)
PL_preambleav = newAV();
s++;
return s;
}
case 'M':
- forbid_setid('M', suidscript); /* XXX ? */
+ forbid_setid('M', -1); /* XXX ? */
/* FALL THROUGH */
case 'm':
- forbid_setid('m', suidscript); /* XXX ? */
+ forbid_setid('m', -1); /* XXX ? */
if (*++s) {
char *start;
SV *sv;
s++;
return s;
case 's':
- forbid_setid('s', suidscript);
+ forbid_setid('s', -1);
PL_doswitches = TRUE;
s++;
return s;
/* skip forward in input to the real script? */
+ /* This will croak if suidscript is >= 0, as -x cannot be used with
+ setuid scripts. */
forbid_setid('x', suidscript);
+ /* Hence you can't get here if suidscript >= 0 */
+
#ifdef MACOS_TRADITIONAL
/* Since the Mac OS does not honor #! arguments for us, we do it ourselves */
while (isDIGIT(s2[-1]) || s2[-1] == '-' || s2[-1] == '.'
|| s2[-1] == '_') s2--;
if (strnEQ(s2-4,"perl",4))
- while ((s = moreswitches(s, -1)))
+ while ((s = moreswitches(s)))
;
}
#ifdef MACOS_TRADITIONAL
PERL_CALLCONV OP* Perl_mod(pTHX_ OP* o, I32 type);
PERL_CALLCONV int Perl_mode_from_discipline(pTHX_ SV* discp);
-PERL_CALLCONV char* Perl_moreswitches(pTHX_ char* s, int suidscript)
+PERL_CALLCONV char* Perl_moreswitches(pTHX_ char* s)
__attribute__nonnull__(pTHX_1);
PERL_CALLCONV OP* Perl_my(pTHX_ OP* o)
Perl_croak(aTHX_ "Too late for \"-%.*s\" option",
(int)(d - m), m);
}
- /* Given that these switches are within the script,
- then it is not unsafe to allow them even within
- a suidperl fd script. Hence pass in the
- suidscript flag as -1, irrespective of what we
- really are. */
- d = moreswitches(d, -1);
+ d = moreswitches(d);
} while (d);
if (PL_doswitches && !switches_done) {
int argc = PL_origargc;