Subject: | Net::DNS::RR::DS->string bubblebabble error |
Date: | Tue, 23 Oct 2007 11:57:35 +0200 |
To: | <bug-Net-DNS-SEC [...] rt.cpan.org> |
From: | "Ulrich Wisser" <Ulrich.Wisser [...] iis.se> |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello,
while trying some new code for the .se zone I found an error in the Net::DNS::RR::DS package.
When the string method of a Net::DNS:RR::DS object is called, and the digestbin is not given the package will enter an endless loop. Because AUTOLOAD will fail to load digestbin and will call the string method once again for the error message.
I included a small script to reproduce the error. And I also included perl -V.
Regards,
Ulrich
use Net::DNS::RR;
$|=1;
my $ds1 = Net::DNS::RR->new(
'algorithm' => 3,
'class' => 'IN',
'digest' => '1234567890ABCDEF',
'digtype' => 5,
'keytag' => 123,
'name' => 'test1dom1.se',
'ttl' => 43200,
'type' => 'DS',
'digestbin' => ''
);
#error only occurs when next line is commented
#print 'Digest 1: '.$ds1->string."\n";
my $ds2 = Net::DNS::RR->new(
'algorithm' => 3,
'class' => 'IN',
'digest' => '1234567890ABCDEF',
'digtype' => 5,
'keytag' => 123,
'name' => 'test1dom1.se',
'ttl' => 43200,
'type' => 'DS',
);
print 'Digest 2: '.$ds2->string."\n";
Summary of my perl5 (revision 5 version 8 subversion 7) configuration:
Platform:
osname=linux, osvers=2.6.10, archname=i486-linux-gnu-thread-multi
uname='linux rothera 2.6.10 #1 smp fri may 13 09:24:22 utc 2005 i686 gnulinux '
config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.7 -Dsitearch=/usr/local/lib/perl/5.8.7 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.7 -Dd_dosuid -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=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
ccversion='', gccversion='4.0.3 20051204 (prerelease) (Ubuntu 4.0.2-5ubuntu2)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
perllibs=-ldl -lm -lpthread -lc -lcrypt
libc=/lib/libc-2.3.5.so, so=so, useshrplib=true, libperl=libperl.so.5.8.7
gnulibc_version='2.3.5'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES
PERL_IMPLICIT_CONTEXT
Locally applied patches:
SPRINTF0 - fixes for sprintf formatting issues - CVE-2005-3962
Built under linux
Compiled at Dec 16 2005 07:48:39
%ENV:
PERLLIB="/home/ulrich/services/SEServ/lib/"
@INC:
/home/ulrich/services/SEServ/lib/
/etc/perl
/usr/local/lib/perl/5.8.7
/usr/local/share/perl/5.8.7
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.8
/usr/share/perl/5.8
/usr/local/lib/site_perl
.
-----BEGIN PGP SIGNATURE-----
Version: PGP 8.1
iQA/AwUBRx3Fjy9yrDO0wHQwEQIm/QCbBBO3jaKbfrbRnleK8Q4NBCX1/C8AmgKp
81NayV+OwArH6sj8b6TDnLrI
=lPTZ
-----END PGP SIGNATURE-----