diff options
author | Tony Cook <tony@develop-help.com> | 2015-06-25 13:58:57 +1000 |
---|---|---|
committer | Tony Cook <tony@develop-help.com> | 2015-06-29 10:56:34 +1000 |
commit | 60121127fb9d33a8ca4ab1e213b635fe63c8fa8c (patch) | |
tree | b5a0c466894a0c895f94da96b9bfd46df55a2992 /pp_sys.c | |
parent | 51f0b9cd668a8ebc243325d1c5340c661123e44b (diff) | |
download | perl-60121127fb9d33a8ca4ab1e213b635fe63c8fa8c.tar.gz |
[perl #125305] handle chdir to closed handle correctly
Diffstat (limited to 'pp_sys.c')
-rw-r--r-- | pp_sys.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -3599,6 +3599,16 @@ PP(pp_chdir) SV * const sv = POPs; if (PL_op->op_flags & OPf_SPECIAL) { gv = gv_fetchsv(sv, 0, SVt_PVIO); + if (!gv) { + if (ckWARN(WARN_UNOPENED)) { + Perl_warner(aTHX_ packWARN(WARN_UNOPENED), + "chdir() on unopened filehandle %" SVf, sv); + } + SETERRNO(EBADF,RMS_IFI); + PUSHi(0); + TAINT_PROPER("chdir"); + RETURN; + } } else if (!(gv = MAYBE_DEREF_GV(sv))) tmps = SvPV_nomg_const_nolen(sv); |