summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2012-02-23 15:44:33 +0100
committerNicholas Clark <nick@ccl4.org>2012-02-27 11:31:48 +0100
commit8d1138377104247a841c52023a0f6d0c9ea464a8 (patch)
tree13baf8c2209c04bb561a511609af17bab0cbfa09
parent286a76ab020bbce3bb02a3c2490a7a01ad781c47 (diff)
downloadperl-8d1138377104247a841c52023a0f6d0c9ea464a8.tar.gz
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.
-rw-r--r--embed.fnc4
-rw-r--r--embed.h2
-rw-r--r--perl.c26
-rw-r--r--proto.h7
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)