From 8d1138377104247a841c52023a0f6d0c9ea464a8 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Thu, 23 Feb 2012 15:44:33 +0100 Subject: In perl.c, change S_open_script() to return rsfp. Previously it was being passed &rsfp as a parameter, because it was returning another value, fdscript. However, the return value has been ignored since commit cc69b689ee7c2745 removed suidperl in January 2009. --- embed.fnc | 4 ++-- embed.h | 2 +- perl.c | 26 +++++++++++++------------- proto.h | 7 +++---- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/embed.fnc b/embed.fnc index a7e004fe26..5c380fffd5 100644 --- a/embed.fnc +++ b/embed.fnc @@ -1784,8 +1784,8 @@ s |void |init_postdump_symbols|int argc|NN char **argv|NULLOK char **env s |void |init_predump_symbols rs |void |my_exit_jump s |void |nuke_stacks -s |int |open_script |NN const char *scriptname|bool dosearch \ - |NN bool *suidscript|NN PerlIO **rsfpp +s |PerlIO *|open_script |NN const char *scriptname|bool dosearch \ + |NN bool *suidscript sr |void |usage #ifndef SETUID_SCRIPTS_ARE_SECURE_NOW so |void |validate_suid |NN PerlIO *rsfp diff --git a/embed.h b/embed.h index 541309e42e..9fdf91b7ce 100644 --- a/embed.h +++ b/embed.h @@ -1439,7 +1439,7 @@ #define minus_v() S_minus_v(aTHX) #define my_exit_jump() S_my_exit_jump(aTHX) #define nuke_stacks() S_nuke_stacks(aTHX) -#define open_script(a,b,c,d) S_open_script(aTHX_ a,b,c,d) +#define open_script(a,b,c) S_open_script(aTHX_ a,b,c) #define parse_body(a,b) S_parse_body(aTHX_ a,b) #define run_body(a) S_run_body(aTHX_ a) #define usage() S_usage(aTHX) diff --git a/perl.c b/perl.c index 551867501c..2385f89ad6 100644 --- a/perl.c +++ b/perl.c @@ -2073,7 +2073,7 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) { bool suidscript = FALSE; - open_script(scriptname, dosearch, &suidscript, &rsfp); + rsfp = open_script(scriptname, dosearch, &suidscript); validate_suid(validarg, scriptname, fdscript, suidscript, linestr_sv, rsfp); @@ -3614,11 +3614,11 @@ S_init_main_stash(pTHX) sv_setpvs(get_sv("/", GV_ADD), "\n"); } -STATIC int -S_open_script(pTHX_ const char *scriptname, bool dosearch, - bool *suidscript, PerlIO **rsfpp) +STATIC PerlIO * +S_open_script(pTHX_ const char *scriptname, bool dosearch, bool *suidscript) { int fdscript = -1; + PerlIO *rsfp = NULL; dVAR; PERL_ARGS_ASSERT_OPEN_SCRIPT; @@ -3668,16 +3668,16 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, if (*PL_origfilename == '-' && PL_origfilename[1] == '\0') scriptname = (char *)""; if (fdscript >= 0) { - *rsfpp = PerlIO_fdopen(fdscript,PERL_SCRIPT_MODE); + rsfp = PerlIO_fdopen(fdscript,PERL_SCRIPT_MODE); # if defined(HAS_FCNTL) && defined(F_SETFD) - if (*rsfpp) + if (rsfp) /* ensure close-on-exec */ - fcntl(PerlIO_fileno(*rsfpp),F_SETFD,1); + fcntl(PerlIO_fileno(rsfp),F_SETFD,1); # endif } else if (!*scriptname) { forbid_setid(0, *suidscript); - *rsfpp = PerlIO_stdin(); + rsfp = PerlIO_stdin(); } else { #ifdef FAKE_BIT_BUCKET @@ -3712,7 +3712,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, #endif } #endif - *rsfpp = PerlIO_open(scriptname,PERL_SCRIPT_MODE); + rsfp = PerlIO_open(scriptname,PERL_SCRIPT_MODE); #ifdef FAKE_BIT_BUCKET if (memEQ(scriptname, FAKE_BIT_BUCKET_PREFIX, sizeof(FAKE_BIT_BUCKET_PREFIX) - 1) @@ -3722,12 +3722,12 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, scriptname = BIT_BUCKET; #endif # if defined(HAS_FCNTL) && defined(F_SETFD) - if (*rsfpp) + if (rsfp) /* ensure close-on-exec */ - fcntl(PerlIO_fileno(*rsfpp),F_SETFD,1); + fcntl(PerlIO_fileno(rsfp),F_SETFD,1); # endif } - if (!*rsfpp) { + if (!rsfp) { /* PSz 16 Sep 03 Keep neat error message */ if (PL_e_script) Perl_croak(aTHX_ "Can't open "BIT_BUCKET": %s\n", Strerror(errno)); @@ -3735,7 +3735,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, Perl_croak(aTHX_ "Can't open perl script \"%s\": %s\n", CopFILE(PL_curcop), Strerror(errno)); } - return fdscript; + return rsfp; } /* Mention diff --git a/proto.h b/proto.h index f01e7c3cdf..dd3fd587de 100644 --- a/proto.h +++ b/proto.h @@ -5925,12 +5925,11 @@ STATIC void S_my_exit_jump(pTHX) __attribute__noreturn__; STATIC void S_nuke_stacks(pTHX); -STATIC int S_open_script(pTHX_ const char *scriptname, bool dosearch, bool *suidscript, PerlIO **rsfpp) +STATIC PerlIO * S_open_script(pTHX_ const char *scriptname, bool dosearch, bool *suidscript) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(pTHX_3); #define PERL_ARGS_ASSERT_OPEN_SCRIPT \ - assert(scriptname); assert(suidscript); assert(rsfpp) + assert(scriptname); assert(suidscript) STATIC void* S_parse_body(pTHX_ char **env, XSINIT_t xsinit); STATIC void S_run_body(pTHX_ I32 oldscope) -- cgit v1.2.1