summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeon Timmermans <fawaka@gmail.com>2013-09-07 08:58:18 +0200
committerRicardo Signes <rjbs@cpan.org>2013-12-21 15:48:42 -0500
commit5f7c362921e5d7cb19e88bcc48d482d6246efd37 (patch)
tree601a96b65c6f1cdd9ffe51730169ae9063ce0603
parent4c4a7f8fbcb603c3f62d98ef89f48c87875c27e7 (diff)
downloadperl-5f7c362921e5d7cb19e88bcc48d482d6246efd37.tar.gz
Fix segfault in filehandle duplication
Previously PerlIOBase_dup didn't check if pushing the new layer succeeded before (optionally) setting the utf8 flag. This could cause segfaults-by-nullpointer. (cherry picked from commit df8c7dee25da69fc88678b8949166e08fb686037)
-rw-r--r--perlio.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/perlio.c b/perlio.c
index 2e5a77d2af..634efa081b 100644
--- a/perlio.c
+++ b/perlio.c
@@ -2303,7 +2303,7 @@ PerlIOBase_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags)
if (self && self->Getarg)
arg = (*self->Getarg)(aTHX_ o, param, flags);
f = PerlIO_push(aTHX_ f, self, PerlIO_modestr(o,buf), arg);
- if (PerlIOBase(o)->flags & PERLIO_F_UTF8)
+ if (f && PerlIOBase(o)->flags & PERLIO_F_UTF8)
PerlIOBase(f)->flags |= PERLIO_F_UTF8;
SvREFCNT_dec(arg);
}