[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]
[perl #37694] segfault with PerlIO::get_layers()
# New Ticket Created by Peter Dintelmann
# Please include the string: [perl #37694]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=37694 >
This is a bug report for perl from Peter.Dintelmann@dresdner-bank.com,
generated with the help of perlbug 1.35 running under perl v5.8.7.
Calling PerlIO::get_layers() with an argument which is neither
a handle nor contains a valid string results in a segmentation
fault.
$ /opt/perl32/bin/perl -e 'PerlIO::get_layers undef'
Segmentation Fault
$ /opt/perl32/bin/perl -e 'PerlIO::get_layers 123'
Segmentation Fault
This is only to confirm my new nickname from the "This week..."
summary :-)
The patch below tries to fix this and the code now runs ok.
$ PERLIO=:utf8 /opt/perl32/bin/perl -le '$,=$/; print \
> map {"$_: " . join ":", PerlIO::get_layers $_} \
> (undef, 123, *STDIN, "STDIN", STDIN)'
:
123:
*main::STDIN: unix:utf8
STDIN: unix:utf8
STDIN: unix:utf8
Proposed patch:
$ diff -ur universal.c.ori universal.c
--- universal.c.ori Wed Nov 16 14:20:35 2005
+++ universal.c Wed Nov 16 14:46:29 2005
@@ -619,7 +619,7 @@
if (!isGV(sv)) {
if (SvROK(sv) && isGV(SvRV(sv)))
gv = (GV*)SvRV(sv);
- else
+ else if (SvPOKp(sv))
gv = gv_fetchpv(SvPVX(sv), FALSE, SVt_PVIO);
}
---
Flags:
category=core
severity=low
---
Site configuration information for perl v5.8.7:
Configured by p013176 at Wed Jun 1 15:12:46 MEST 2005.
Summary of my perl5 (revision 5 version 8 subversion 7) configuration:
Platform:
osname=solaris, osvers=2.9, archname=sun4-solaris-thread-multi-64int
uname='sunos oikbm03 5.9 generic_112233-01 sun4u sparc sunw,ultra-5_10 '
config_args='-Dprefix=/opt/perl32 -Uinstallusrbinperl -Dcc=gcc
-Doptimize=-O2 -Aldflags=-R/usr/local/lib -Duseshrplib -Duseperlio
-Dusethreads -Duselargefiles -Duse64bitint -des'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=define use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc', ccflags ='-D_REENTRANT -fno-strict-aliasing -pipe
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2',
cppflags='-D_REENTRANT -fno-strict-aliasing -pipe -I/usr/local/include'
ccversion='', gccversion='3.4.2', gccosandvers='solaris2.9'
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=87654321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='gcc', ldflags =' -R/usr/local/lib -L/usr/local/lib '
libpth=/usr/local/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -lgdbm -ldl -lm -lpthread -lc
perllibs=-lsocket -lnsl -ldl -lm -lpthread -lc
libc=/lib/libc.so, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' -R
/opt/perl32/lib/5.8.7/sun4-solaris-thread-multi-64int/CORE'
cccdlflags='-fPIC', lddlflags='-G -R/usr/local/lib -L/usr/local/lib'
Locally applied patches:
---
@INC for perl v5.8.7:
/opt/perl32/lib/5.8.7/sun4-solaris-thread-multi-64int
/opt/perl32/lib/5.8.7
/opt/perl32/lib/site_perl/5.8.7/sun4-solaris-thread-multi-64int
/opt/perl32/lib/site_perl/5.8.7
/opt/perl32/lib/site_perl
.
---
Environment for perl v5.8.7:
HOME=/export/home/p013176
LANG (unset)
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/usr/bin:/bin:/usr/sbin:/sbin
PERL_BADLANG (unset)
SHELL=/usr/bin/bash
[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]