Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segfault in 5.18.2 with Digest::SHA #13656

Closed
p5pRT opened this issue Mar 11, 2014 · 25 comments
Closed

Segfault in 5.18.2 with Digest::SHA #13656

p5pRT opened this issue Mar 11, 2014 · 25 comments

Comments

@p5pRT
Copy link

p5pRT commented Mar 11, 2014

Migrated from rt.perl.org#121421 (status was 'resolved')

Searchable as RT121421$

@p5pRT
Copy link
Author

p5pRT commented Mar 11, 2014

From mshelor@cpan.org

This is a bug report for perl from mshelor@​cpan.org,
generated with the help of perlbug 1.39 running under perl 5.10.1.


Invoking Digest​::SHA methods in nonsensical or incorrect orders
can cause segmentation faults in Perl Release 5.18.2.

The problem arises from the SHA module's failure to perform
appropriate sv_isa checks on certain object handles, a problem
that was corrected in Digest​::SHA version 5.87.

This bug report includes a patch which corrects the problem in
Perl Release 5.18.2. Before the patch is applied, this is what
occurs​:

$ $p18 -le "use Digest​::SHA; print Digest​::SHA->add(qq(a))->hexdigest"
Segmentation fault

Subsequent to applying the patch, the following correct behavior
results​:

$ $p18p -le "use Digest​::SHA; print Digest​::SHA->add(qq(a))->hexdigest"
Can't call method "hexdigest" on an undefined value at -e line 1.

The patch is applied by running

  $ patch -p0 <SHA.xs.patch

from the directory in which the tarball is unrolled. Or see header in
patch file for details.

Mark



Flags​:
  category=core
  severity=high


Site configuration information for perl 5.10.1​:

Configured by Debian Project at Tue Apr 26 15​:56​:23 UTC 2011.

Summary of my perl5 (revision 5 version 10 subversion 1) configuration​:

  Platform​:
  osname=linux, osvers=2.6.24-27-server,
archname=i686-linux-gnu-thread-multi
  uname='linux vernadsky 2.6.24-27-server #1 smp fri mar 12 01​:45​:06
utc 2010 i686 i686 i386 gnulinux '
  config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN
-Dcccdlflags=-fPIC -Darchname=i686-linux-gnu -Dprefix=/usr
-Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10
-Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5
-Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local
-Dsitelib=/usr/local/share/perl/5.10.1
-Dsitearch=/usr/local/lib/perl/5.10.1 -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 -Ud_ualarm -Uusesfio
-Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Dplibpth=/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu -Duseshrplib -Dlibperl=libperl.so.5.10.1
-Dd_dosuid -des'
  hint=recommended, useposix=true, d_sigaction=define
  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 -DDEBIAN
-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  optimize='-O2 -g',
  cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing
-pipe -fstack-protector -I/usr/local/include'
  ccversion='', gccversion='4.5.2', 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 =' -fstack-protector -L/usr/local/lib'
  libpth=/usr/local/lib /lib/i386-linux-gnu /usr/lib/i386-linux-gnu
/lib /usr/lib /usr/lib64
  libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
  perllibs=-ldl -lm -lpthread -lc -lcrypt
  libc=, so=so, useshrplib=true, libperl=libperl.so.5.10.1
  gnulibc_version='2.13'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib
-fstack-protector'

Locally applied patches​:
  DEBPKG​:debian/arm_thread_stress_timeout -
http​://bugs.debian.org/501970 Raise the timeout of
ext/threads/shared/t/stress.t to accommodate slower build hosts
  DEBPKG​:debian/cpan_config_path - Set location of CPAN​::Config to
/etc/perl as /usr may not be writable.
  DEBPKG​:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS
default for modules installed from CPAN.
  DEBPKG​:debian/db_file_ver - http​://bugs.debian.org/340047 Remove
overly restrictive DB_File version check.
  DEBPKG​:debian/doc_info - Replace generic man(1) instructions with
Debian-specific information.
  DEBPKG​:debian/enc2xs_inc - http​://bugs.debian.org/290336 Tweak
enc2xs to follow symlinks and ignore missing @​INC directories.
  DEBPKG​:debian/errno_ver - http​://bugs.debian.org/343351 Remove
Errno version check due to upgrade problems with long-running processes.
  DEBPKG​:debian/extutils_hacks - Various debian-specific ExtUtils changes
  DEBPKG​:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the
binary targets.
  DEBPKG​:debian/instmodsh_doc - Debian policy doesn't install
.packlist files for core or vendor.
  DEBPKG​:debian/ld_run_path - Remove standard libs from LD_RUN_PATH
as per Debian policy.
  DEBPKG​:debian/libnet_config_path - Set location of libnet.cfg to
/etc/perl/Net as /usr may not be writable.
  DEBPKG​:debian/m68k_thread_stress - http​://bugs.debian.org/495826
Disable some threads tests on m68k for now due to missing TLS.
  DEBPKG​:debian/mod_paths - Tweak @​INC ordering for Debian
  DEBPKG​:debian/module_build_man_extensions -
http​://bugs.debian.org/479460 Adjust Module​::Build manual page
extensions for the Debian Perl policy
  DEBPKG​:debian/perl_synopsis - http​://bugs.debian.org/278323
Rearrange perl.pod
  DEBPKG​:debian/prune_libs - http​://bugs.debian.org/128355 Prune the
list of libraries wanted to what we actually need.
  DEBPKG​:debian/use_gdbm - Explicitly link against -lgdbm_compat in
ODBM_File/NDBM_File.
  DEBPKG​:fixes/assorted_docs - http​://bugs.debian.org/443733
[384f06a] Math​::BigInt​::CalcEmu documentation grammar fix
  DEBPKG​:fixes/net_smtp_docs - http​://bugs.debian.org/100195
[rt.cpan.org #36038] Document the Net​::SMTP 'Port' option
  DEBPKG​:fixes/processPL - http​://bugs.debian.org/357264 [rt.cpan.org
#17224] Always use PERLRUNINST when building perl modules.
  DEBPKG​:debian/perlivp - http​://bugs.debian.org/510895 Make perlivp
skip include directories in /usr/local
  DEBPKG​:fixes/pod2man-index-backslash -
http​://bugs.debian.org/521256 Escape backslashes in .IX entries
  DEBPKG​:debian/disable-zlib-bundling - Disable zlib bundling in
Compress​::Raw​::Zlib
  DEBPKG​:fixes/kfreebsd_cppsymbols - http​://bugs.debian.org/533098
[3b910a0] Add gcc predefined macros to $Config{cppsymbols} on GNU/kFreeBSD.
  DEBPKG​:debian/cpanplus_definstalldirs -
http​://bugs.debian.org/533707 Configure CPANPLUS to use the site
directories by default.
  DEBPKG​:debian/cpanplus_config_path - Save local versions of
CPANPLUS​::Config​::System into /etc/perl.
  DEBPKG​:fixes/kfreebsd-filecopy-pipes -
http​://bugs.debian.org/537555 [16f708c] Fix File​::Copy​::copy with pipes
on GNU/kFreeBSD
  DEBPKG​:fixes/anon-tmpfile-dir - http​://bugs.debian.org/528544 [perl
#66452] Honor TMPDIR when open()ing an anonymous temporary file
  DEBPKG​:fixes/abstract-sockets - http​://bugs.debian.org/329291
[89904c0] Add support for Abstract namespace sockets.
  DEBPKG​:fixes/hurd_cppsymbols - http​://bugs.debian.org/544307
[eeb92b7] Add gcc predefined macros to $Config{cppsymbols} on GNU/Hurd.
  DEBPKG​:fixes/autodie-flock - http​://bugs.debian.org/543731 Allow
for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc
  DEBPKG​:fixes/archive-tar-instance-error -
http​://bugs.debian.org/539355 [rt.cpan.org #48879] Separate Archive​::Tar
instance error strings from each other
  DEBPKG​:fixes/positive-gpos - http​://bugs.debian.org/545234 [perl
#69056] [c584a96] Fix \\G crash on first match
  DEBPKG​:debian/devel-ppport-ia64-optim -
http​://bugs.debian.org/548943 Work around an ICE on ia64
  DEBPKG​:fixes/trie-logic-match - http​://bugs.debian.org/552291 [perl
#69973] [0abd0d7] Fix a DoS in Unicode processing [CVE-2009-3626]
  DEBPKG​:fixes/hppa-thread-eagain - http​://bugs.debian.org/554218
make the threads-shared test suite more robust, fixing failures on hppa
  DEBPKG​:fixes/crash-on-undefined-destroy -
http​://bugs.debian.org/564074 [perl #71952] [1f15e67] Fix a NULL pointer
dereference when looking for a DESTROY method
  DEBPKG​:fixes/tainted-errno - http​://bugs.debian.org/574129 [perl
#61976] [be1cf43] fix an errno stringification bug in taint mode
  DEBPKG​:fixes/safe-upgrade - http​://bugs.debian.org/582978 Upgrade
Safe.pm to 2.25, fixing CVE-2010-1974
  DEBPKG​:fixes/tell-crash - http​://bugs.debian.org/578577 [f4817f3]
Fix a tell() crash on bad arguments.
  DEBPKG​:fixes/format-write-crash - http​://bugs.debian.org/579537
[perl #22977] [421f30e] Fix a crash in format/write
  DEBPKG​:fixes/arm-alignment - http​://bugs.debian.org/289884
[f1c7503] Prevent gcc from optimizing the alignment test away on armel
  DEBPKG​:fixes/fcgi-test - Fix a failure in CGI/t/fast.t when FCGI is
installed
  DEBPKG​:fixes/hurd-ccflags - http​://bugs.debian.org/587901 Make
hints/gnu.sh append to $ccflags rather than overriding them
  DEBPKG​:debian/squelch-locale-warnings -
http​://bugs.debian.org/508764 Squelch locale warnings in Debian package
maintainer scripts
  DEBPKG​:fixes/lc-numeric-docs - http​://bugs.debian.org/379329 [perl
#78452] [903eb63] LC_NUMERIC documentation fixes
  DEBPKG​:fixes/lc-numeric-sprintf - http​://bugs.debian.org/601549
[perl #78632] [b3fd614] Fix sprintf not to ignore LC_NUMERIC with constants
  DEBPKG​:fixes/concat-stack-corruption -
http​://bugs.debian.org/596105 [perl #78674] [e3393f5] Fix stack pointer
corruption in pp_concat() with 'use encoding'
  DEBPKG​:fixes/cgi-multiline-header - http​://bugs.debian.org/606995
[CVE-2010-2761 CVE-2010-4410 CVE-2010-4411] CGI.pm MIME boundary and
multiline header vulnerabilities
  DEBPKG​:fixes/h2ph-gcc-4.5 - http​://bugs.debian.org/599933 [8d66b3f]
Fix h2ph and test
  DEBPKG​:fixes/threads-tmps-crash - [perl #70411] [24855df]
Conditionally compile tmps stack cleanup code
  DEBPKG​:patchlevel - http​://bugs.debian.org/567489 List packaged
patches for 5.10.1-17ubuntu1 in patchlevel.h


@​INC for perl 5.10.1​:
  /home/mshelor/perllib/i686-linux-gnu-thread-multi
  /home/mshelor/perllib
  /etc/perl
  /usr/local/lib/perl/5.10.1
  /usr/local/share/perl/5.10.1
  /usr/lib/perl5
  /usr/share/perl5
  /usr/lib/perl/5.10
  /usr/share/perl/5.10
  /usr/local/lib/site_perl
  .


Environment for perl 5.10.1​:
  HOME=/home/mshelor
  LANG=en_US.UTF-8
  LANGUAGE=en_US​:en
  LC_ALL=C
  LD_LIBRARY_PATH (unset)
  LOGDIR (unset)

PATH=/home/mshelor/bin​:/home/mshelor/coreutils/bin​:/home/mshelor/perllib/bin​:/usr/local/sbin​:/usr/local/bin​:/usr/sbin​:/usr/bin​:/sbin​:/bin​:/usr/games​:.
  PERL5LIB=/home/mshelor/perllib
  PERL_BADLANG (unset)
  SHELL=/bin/bash

@p5pRT
Copy link
Author

p5pRT commented Mar 11, 2014

From mshelor@cpan.org

SHA.xs.patch
--- perl-5.18.2/cpan/Digest-SHA/SHA.xs	2014-01-06 15:46:43.000000000 -0700
+++ perl-5.18.2.patched/cpan/Digest-SHA/SHA.xs	2014-03-11 13:10:38.594772734 -0700
@@ -34,6 +34,8 @@
 CODE:
        RETVAL = shaclose(s);
        sv_setiv(SvRV(ST(0)), 0);
+OUTPUT:
+	RETVAL
 
 int
 shadump(file, s)
@@ -186,6 +188,8 @@
 	SHA *state;
 	int result;
 PPCODE:
+	if (!sv_isa(self, "Digest::SHA"))
+		XSRETURN_UNDEF;
 	state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
 	result = ix ? shaalg(state) : shadsize(state) << 3;
 	ST(0) = sv_2mortal(newSViv(result));
@@ -200,6 +204,8 @@
 	STRLEN len;
 	SHA *state;
 PPCODE:
+	if (!sv_isa(self, "Digest::SHA"))
+		XSRETURN_UNDEF;
 	state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
 	for (i = 1; i < items; i++) {
 		data = (unsigned char *) (SvPVbyte(ST(i), len));
@@ -224,6 +230,8 @@
 	SHA *state;
 	char *result;
 PPCODE:
+	if (!sv_isa(self, "Digest::SHA"))
+		XSRETURN_UNDEF;
 	state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
 	shafinish(state);
 	len = 0;

@p5pRT
Copy link
Author

p5pRT commented Mar 12, 2014

From @jkeenan

On Tue Mar 11 14​:35​:50 2014, mshelor@​cpan.org wrote​:

This is a bug report for perl from mshelor@​cpan.org,
generated with the help of perlbug 1.39 running under perl 5.10.1.

-----------------------------------------------------------------
Invoking Digest​::SHA methods in nonsensical or incorrect orders
can cause segmentation faults in Perl Release 5.18.2.

The problem arises from the SHA module's failure to perform
appropriate sv_isa checks on certain object handles, a problem
that was corrected in Digest​::SHA version 5.87.

This bug report includes a patch which corrects the problem in
Perl Release 5.18.2. Before the patch is applied, this is what
occurs​:

[snip]

Mark,

I'm somewhat confused as to how to handle this. Digest​::SHA is included in the Perl 5 core distribution, but its positioning under the 'cpan/' directory suggests that it is primarily maintained on CPAN.

In this case, we normally move the complaint to the CPAN distro's bug tracker, request that the maintainer correct the problem in CPAN and release a new CPAN version and notify p5p when the new CPAN release is available. In the meantime, we usually mark the ticket in RT as "Rejected" and "SendtoCPAN".

However, when I check Porting/Maintainers.pl, I see​:

#####
  'Digest​::SHA' => {
  'DISTRIBUTION' => 'MSHELOR/Digest-SHA-5.87.tar.gz',
  'FILES' => q[cpan/Digest-SHA],
  'EXCLUDED' => [
  qw( t/pod.t
  t/podcover.t
  examples/dups
  ),
  ],
  },
#####

... which suggests that I would just be referring the issue back to you!

Can you advise?

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Mar 12, 2014

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Mar 13, 2014

From @ikegami

On Wed, Mar 12, 2014 at 7​:09 PM, James E Keenan via RT <
perlbug-followup@​perl.org> wrote​:

On Tue Mar 11 14​:35​:50 2014, mshelor@​cpan.org wrote​:

This is a bug report for perl from mshelor@​cpan.org,
generated with the help of perlbug 1.39 running under perl 5.10.1.

-----------------------------------------------------------------
Invoking Digest​::SHA methods in nonsensical or incorrect orders
can cause segmentation faults in Perl Release 5.18.2.

The problem arises from the SHA module's failure to perform
appropriate sv_isa checks on certain object handles, a problem
that was corrected in Digest​::SHA version 5.87.

This bug report includes a patch which corrects the problem in
Perl Release 5.18.2. Before the patch is applied, this is what
occurs​:

[snip]

Mark,

I'm somewhat confused as to how to handle this. Digest​::SHA is included
in the Perl 5 core distribution, but its positioning under the 'cpan/'
directory suggests that it is primarily maintained on CPAN.

In this case, we normally move the complaint to the CPAN distro's bug
tracker, request that the maintainer correct the problem in CPAN and
release a new CPAN version and notify p5p when the new CPAN release is
available. In the meantime, we usually mark the ticket in RT as "Rejected"
and "SendtoCPAN".

However, when I check Porting/Maintainers.pl, I see​:

#####
'Digest​::SHA' => {
'DISTRIBUTION' => 'MSHELOR/Digest-SHA-5.87.tar.gz',
'FILES' => q[cpan/Digest-SHA],
'EXCLUDED' => [
qw( t/pod.t
t/podcover.t
examples/dups
),
],
},
#####

... which suggests that I would just be referring the issue back to you!

Can you advise?

It's already fixed on CPAN ("a problem that was corrected in Digest​::SHA
version 5.87"). I think this is his way of trying to upgrade perl's version
of Digest​::SHA.

@p5pRT
Copy link
Author

p5pRT commented Mar 13, 2014

From @ikegami

On Wed, Mar 12, 2014 at 8​:05 PM, Eric Brine <ikegami@​adaelis.com> wrote​:

On Wed, Mar 12, 2014 at 7​:09 PM, James E Keenan via RT <
perlbug-followup@​perl.org> wrote​:

On Tue Mar 11 14​:35​:50 2014, mshelor@​cpan.org wrote​:

This is a bug report for perl from mshelor@​cpan.org,
generated with the help of perlbug 1.39 running under perl 5.10.1.

-----------------------------------------------------------------

... which suggests that I would just be referring the issue back to you!

Can you advise?

It's already fixed on CPAN ("a problem that was corrected in Digest​::SHA
version 5.87"). I think this is his way of trying to upgrade perl's version
of Digest​::SHA.

1. Bleed already has 5.87, and 5.87 has the checks the patch in the ticket
adds. There's nothing to do for bleed.

2. 5.18.2 has 5.84_01, which doesn't have the fix. The ticket was filed
against 5.18.2, so perhaps it should be taken as a request to update the
version of Digest​::SHA included in 5.18.3?

3. Note that neither CPAN nor bleed has the following change described by
the patch​:

@​@​ -34,6 +34,8 @​@​
CODE​:
  RETVAL = shaclose(s);
  sv_setiv(SvRV(ST(0)), 0);
+OUTPUT​:
+ RETVAL

int
shadump(file, s)

@p5pRT
Copy link
Author

p5pRT commented Mar 13, 2014

From @ppisar

On 2014-03-13, Eric Brine <ikegami@​adaelis.com> wrote​:

It's already fixed on CPAN ("a problem that was corrected in Digest​::SHA
version 5.87"). I think this is his way of trying to upgrade perl's version
of Digest​::SHA.

No upgrade. Just applying the fix. 5.87 contains more changes than this
one fix.

-- Petr

@p5pRT
Copy link
Author

p5pRT commented Mar 13, 2014

From mshelor@cpan.org

On 03/12/2014 05​:18 PM, Eric Brine via RT wrote​:

1. Bleed already has 5.87, and 5.87 has the checks the patch in the ticket
adds. There's nothing to do for bleed.

2. 5.18.2 has 5.84_01, which doesn't have the fix. The ticket was filed
against 5.18.2, so perhaps it should be taken as a request to update the
version of Digest​::SHA included in 5.18.3?

3. Note that neither CPAN nor bleed has the following change described by
the patch​:

@​@​ -34,6 +34,8 @​@​
CODE​:
RETVAL = shaclose(s);
sv_setiv(SvRV(ST(0)), 0);
+OUTPUT​:
+ RETVAL

int
shadump(file, s)

That sums it up.

Regarding item 2​: the latest stable release is 5.18.2, so one assumes
the fix will be applied there as well, and not just deferred until 5.18.3 ?

Re item 3, the missing OUTPUT clause for Digest​::SHA 5.87 now causes a
compiler warning when building Perl 5.18.2, which is why I slipped this
fragment into the patch. FYI I'm publishing 5.88 in the next week or so
which includes that fix.

So, for item 1, blead should apply the patch if it wants to silence the
compiler warning.

Mark

@p5pRT
Copy link
Author

p5pRT commented Mar 13, 2014

From mshelor@cpan.org

On 03/12/2014 05​:18 PM, Eric Brine via RT wrote​:

1. Bleed already has 5.87, and 5.87 has the checks the patch in the ticket
adds. There's nothing to do for bleed.

2. 5.18.2 has 5.84_01, which doesn't have the fix. The ticket was filed
against 5.18.2, so perhaps it should be taken as a request to update the
version of Digest​::SHA included in 5.18.3?

3. Note that neither CPAN nor bleed has the following change described by
the patch​:

@​@​ -34,6 +34,8 @​@​
CODE​:
RETVAL = shaclose(s);
sv_setiv(SvRV(ST(0)), 0);
+OUTPUT​:
+ RETVAL

int
shadump(file, s)

That sums it up.

Regarding Item 2​: the latest stable release is 5.18.2, so one assumes
the fix will be applied there as well, and not just deferred until 5.18.3 ?

Re Item 3, the missing OUTPUT clause for Digest​::SHA 5.87 now causes a
compiler warning when building Perl 5.18.2, which is why I slipped this
fragment into the patch. FYI I'm publishing 5.88 in the next week or so
which includes that fix.

So, for Item 1, blead should apply the initial fragment of the patch
(viz. the OUTPUT clause) if it wants to silence the compiler warning.

Mark

@p5pRT
Copy link
Author

p5pRT commented Mar 14, 2014

From @ikegami

On Thu, Mar 13, 2014 at 1​:47 AM, Mark Shelor <m.shelor@​cox.net> wrote​:

On 03/12/2014 05​:18 PM, Eric Brine via RT wrote​:

1. Bleed already has 5.87, and 5.87 has the checks the patch in the ticket

adds. There's nothing to do for bleed.

2. 5.18.2 has 5.84_01, which doesn't have the fix. The ticket was filed
against 5.18.2, so perhaps it should be taken as a request to update the
version of Digest​::SHA included in 5.18.3?

3. Note that neither CPAN nor bleed has the following change described by
the patch​:

@​@​ -34,6 +34,8 @​@​
CODE​:
RETVAL = shaclose(s);
sv_setiv(SvRV(ST(0)), 0);
+OUTPUT​:
+ RETVAL

int
shadump(file, s)

That sums it up.

Regarding item 2​: the latest stable release is 5.18.2, so one assumes the
fix will be applied there as well, and not just deferred until 5.18.3 ?

Changes can be applied to 5.18 (which is to say the "maint-5.18" branch),
but a release is a snapshot, and there can't be two releases named 5.18.2.

Perl 5.18.2 has Digest​::SHA 5.84_01. If a Perl release has something other
than Digest​::SHA 5.84_01, it's not 5.18.2.

Re item 3, the missing OUTPUT clause for Digest​::SHA 5.87 now causes a
compiler warning when building Perl 5.18.2, which is why I slipped this
fragment into the patch. FYI I'm publishing 5.88 in the next week or so
which includes that fix.

So, for item 1, blead should apply the patch if it wants to silence the
compiler warning.

It would make far more sense to wait for Digest​::SHA 5.88 to come out and
include that than to create a 5.87_01 core-only version that will only live
for a week and never see release.

(Note​: I don't know the schedule for 5.18.3 and 5.20.0. Deadlines could
invalidate the previous statement.)

(Note​: I have no idea what's the policy on upgrading modules in maint
releases.)

@p5pRT
Copy link
Author

p5pRT commented Mar 18, 2014

From mshelor@cpan.org

On 03/13/2014 09​:35 PM, Eric Brine wrote​:

It would make far more sense to wait for Digest​::SHA 5.88 to come out and
include that than to create a 5.87_01 core-only version that will only live
for a week and never see release.

Digest​::SHA 5.88 is now published and available for download.

@p5pRT
Copy link
Author

p5pRT commented Mar 21, 2014

From @rjbs

* Eric Brine <ikegami@​adaelis.com> [2014-03-14T00​:35​:37]

It would make far more sense to wait for Digest​::SHA 5.88 to come out and
include that than to create a 5.87_01 core-only version that will only live
for a week and never see release.

(Note​: I don't know the schedule for 5.18.3 and 5.20.0. Deadlines could
invalidate the previous statement.)

(Note​: I have no idea what's the policy on upgrading modules in maint
releases.)

The policy is that we only apply fixes for crashers or security problems, more
or less, so we're much more likely to create a core-only version than to merge
in a CPAN release that does anything else at all.

We have not established a release date for 5.12.3.

--
rjbs

@p5pRT
Copy link
Author

p5pRT commented Apr 16, 2014

From @tonycoz

On Thu Mar 13 02​:10​:21 2014, ppisar wrote​:

On 2014-03-13, Eric Brine <ikegami@​adaelis.com> wrote​:

It's already fixed on CPAN ("a problem that was corrected in
Digest​::SHA
version 5.87"). I think this is his way of trying to upgrade perl's
version
of Digest​::SHA.

No upgrade. Just applying the fix. 5.87 contains more changes than
this
one fix.

I've attached the fix as a format-patch patch.

+1 from me

Tony

@p5pRT
Copy link
Author

p5pRT commented Apr 16, 2014

From @tonycoz

0001-perl-121421-backport-Digest-SHA-fix.patch
From e54b4fa82c46457a9bb0e40bb9479b0ce8e88f21 Mon Sep 17 00:00:00 2001
From: Mark Shelor <m.shelor@cox.net>
Date: Wed, 16 Apr 2014 16:05:45 +1000
Subject: [perl #121421] backport Digest::SHA fix

---
 AUTHORS                           |    1 +
 cpan/Digest-SHA/SHA.xs            |    8 ++++++++
 cpan/Digest-SHA/lib/Digest/SHA.pm |    2 +-
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/AUTHORS b/AUTHORS
index 9cf6807..c5239af 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -733,6 +733,7 @@ Mark P. Lutz			<mark.p.lutz@boeing.com>
 Mark Pease			<peasem@primenet.com>
 Mark Pizzolato			<mark@infocomm.com>
 Mark R. Levinson		<mrl@isc.upenn.edu>
+Mark Shelor			<m.shelor@cox.net>
 Mark Stosberg			<mark@summersault.com>
 Marko Asplund			<aspa@merlot.kronodoc.fi>
 Marnix van Ammers		<marnix@gmail.com>
diff --git a/cpan/Digest-SHA/SHA.xs b/cpan/Digest-SHA/SHA.xs
index 47bef28..cb54fc4 100644
--- a/cpan/Digest-SHA/SHA.xs
+++ b/cpan/Digest-SHA/SHA.xs
@@ -34,6 +34,8 @@ shaclose(s)
 CODE:
        RETVAL = shaclose(s);
        sv_setiv(SvRV(ST(0)), 0);
+OUTPUT:
+	RETVAL
 
 int
 shadump(file, s)
@@ -186,6 +188,8 @@ PREINIT:
 	SHA *state;
 	int result;
 PPCODE:
+	if (!sv_isa(self, "Digest::SHA"))
+		XSRETURN_UNDEF;
 	state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
 	result = ix ? shaalg(state) : shadsize(state) << 3;
 	ST(0) = sv_2mortal(newSViv(result));
@@ -200,6 +204,8 @@ PREINIT:
 	STRLEN len;
 	SHA *state;
 PPCODE:
+	if (!sv_isa(self, "Digest::SHA"))
+		XSRETURN_UNDEF;
 	state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
 	for (i = 1; i < items; i++) {
 		data = (unsigned char *) (SvPVbyte(ST(i), len));
@@ -224,6 +230,8 @@ PREINIT:
 	SHA *state;
 	char *result;
 PPCODE:
+	if (!sv_isa(self, "Digest::SHA"))
+		XSRETURN_UNDEF;
 	state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
 	shafinish(state);
 	len = 0;
diff --git a/cpan/Digest-SHA/lib/Digest/SHA.pm b/cpan/Digest-SHA/lib/Digest/SHA.pm
index 9a631b1..4f84f97 100644
--- a/cpan/Digest-SHA/lib/Digest/SHA.pm
+++ b/cpan/Digest-SHA/lib/Digest/SHA.pm
@@ -7,7 +7,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
 use Fcntl;
 use integer;
 
-$VERSION = '5.84_01';
+$VERSION = '5.84_02';
 
 require Exporter;
 require DynaLoader;
-- 
1.7.10.4

@p5pRT
Copy link
Author

p5pRT commented Apr 17, 2014

From @tonycoz

On Wed, Apr 16, 2014 at 07​:52​:11PM -0700, Mark Shelor wrote​:

Tony,

Is it too late to change my email address under AUTHORS to
mshelor@​cpan.org ?

It's not, since it hasn't been applied.

I've attached a new format-patched commit with the changed email
address.

CC​: p5p so it's picked up for the ticket.

Tony

@p5pRT
Copy link
Author

p5pRT commented Apr 17, 2014

From @tonycoz

0001-perl-121421-backport-Digest-SHA-fix.patch
From a7d7f71f804acaaefc80c8f10a201feb40c1e40e Mon Sep 17 00:00:00 2001
From: Mark Shelor <mshelor@cpan.org>
Date: Wed, 16 Apr 2014 16:05:45 +1000
Subject: [PATCH] [perl #121421] backport Digest::SHA fix

---
 AUTHORS                           |    1 +
 cpan/Digest-SHA/SHA.xs            |    8 ++++++++
 cpan/Digest-SHA/lib/Digest/SHA.pm |    2 +-
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/AUTHORS b/AUTHORS
index 9cf6807..e39e1e1 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -733,6 +733,7 @@ Mark P. Lutz			<mark.p.lutz@boeing.com>
 Mark Pease			<peasem@primenet.com>
 Mark Pizzolato			<mark@infocomm.com>
 Mark R. Levinson		<mrl@isc.upenn.edu>
+Mark Shelor			<mshelor@cpan.org>
 Mark Stosberg			<mark@summersault.com>
 Marko Asplund			<aspa@merlot.kronodoc.fi>
 Marnix van Ammers		<marnix@gmail.com>
diff --git a/cpan/Digest-SHA/SHA.xs b/cpan/Digest-SHA/SHA.xs
index 47bef28..cb54fc4 100644
--- a/cpan/Digest-SHA/SHA.xs
+++ b/cpan/Digest-SHA/SHA.xs
@@ -34,6 +34,8 @@ shaclose(s)
 CODE:
        RETVAL = shaclose(s);
        sv_setiv(SvRV(ST(0)), 0);
+OUTPUT:
+	RETVAL
 
 int
 shadump(file, s)
@@ -186,6 +188,8 @@ PREINIT:
 	SHA *state;
 	int result;
 PPCODE:
+	if (!sv_isa(self, "Digest::SHA"))
+		XSRETURN_UNDEF;
 	state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
 	result = ix ? shaalg(state) : shadsize(state) << 3;
 	ST(0) = sv_2mortal(newSViv(result));
@@ -200,6 +204,8 @@ PREINIT:
 	STRLEN len;
 	SHA *state;
 PPCODE:
+	if (!sv_isa(self, "Digest::SHA"))
+		XSRETURN_UNDEF;
 	state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
 	for (i = 1; i < items; i++) {
 		data = (unsigned char *) (SvPVbyte(ST(i), len));
@@ -224,6 +230,8 @@ PREINIT:
 	SHA *state;
 	char *result;
 PPCODE:
+	if (!sv_isa(self, "Digest::SHA"))
+		XSRETURN_UNDEF;
 	state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
 	shafinish(state);
 	len = 0;
diff --git a/cpan/Digest-SHA/lib/Digest/SHA.pm b/cpan/Digest-SHA/lib/Digest/SHA.pm
index 9a631b1..4f84f97 100644
--- a/cpan/Digest-SHA/lib/Digest/SHA.pm
+++ b/cpan/Digest-SHA/lib/Digest/SHA.pm
@@ -7,7 +7,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
 use Fcntl;
 use integer;
 
-$VERSION = '5.84_01';
+$VERSION = '5.84_02';
 
 require Exporter;
 require DynaLoader;
-- 
1.7.10.4

@p5pRT
Copy link
Author

p5pRT commented May 20, 2014

From @jkeenan

On Tue Apr 15 23​:17​:37 2014, tonyc wrote​:

On Thu Mar 13 02​:10​:21 2014, ppisar wrote​:

On 2014-03-13, Eric Brine <ikegami@​adaelis.com> wrote​:

It's already fixed on CPAN ("a problem that was corrected in
Digest​::SHA
version 5.87"). I think this is his way of trying to upgrade perl's
version
of Digest​::SHA.

No upgrade. Just applying the fix. 5.87 contains more changes than
this
one fix.

I've attached the fix as a format-patch patch.

+1 from me

Tony

Could we get a test that demonstrates that we have fixed the problem?

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Feb 26, 2016

From @mauke

On Wed Apr 16 20​:37​:20 2014, tonyc wrote​:

On Wed, Apr 16, 2014 at 07​:52​:11PM -0700, Mark Shelor wrote​:

Tony,

Is it too late to change my email address under AUTHORS to
mshelor@​cpan.org ?

It's not, since it hasn't been applied.

I've attached a new format-patched commit with the changed email
address.

CC​: p5p so it's picked up for the ticket.

Tony

I believe this ticket can be closed (it's listed in perl5184delta). Any objections?

@p5pRT
Copy link
Author

p5pRT commented Feb 26, 2016

From @jkeenan

On Fri Feb 26 09​:25​:23 2016, mauke- wrote​:

On Wed Apr 16 20​:37​:20 2014, tonyc wrote​:

On Wed, Apr 16, 2014 at 07​:52​:11PM -0700, Mark Shelor wrote​:

Tony,

Is it too late to change my email address under AUTHORS to
mshelor@​cpan.org ?

It's not, since it hasn't been applied.

I've attached a new format-patched commit with the changed email
address.

CC​: p5p so it's picked up for the ticket.

Tony

I believe this ticket can be closed (it's listed in perl5184delta).
Any objections?

I'm puzzled by the status of this ticket. TonyC submitted a patch (the later of the two attachments), but I don't find any evidence that it was applied in blead.

On the other hand, the version of cpan/Digest-SHA/lib/Digest/SHA.pm in blead is 5.95 -- considerably beyond the 5.84_02 in Tony's patch.

The entry in perl5184delta is rather opaque. And no one ever responded to my request that a test be written demonstrating that the problem had been fixed.

Hence​: confusion.

Thank you very much.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Feb 27, 2016

From mshelor@cpan.org

On 02/26/2016 04​:10 PM, James E Keenan via RT wrote​:

On Fri Feb 26 09​:25​:23 2016, mauke- wrote​:

On Wed Apr 16 20​:37​:20 2014, tonyc wrote​:

On Wed, Apr 16, 2014 at 07​:52​:11PM -0700, Mark Shelor wrote​:

Tony,

Is it too late to change my email address under AUTHORS to
mshelor@​cpan.org ?

It's not, since it hasn't been applied.

I've attached a new format-patched commit with the changed email
address.

CC​: p5p so it's picked up for the ticket.

Tony

I believe this ticket can be closed (it's listed in perl5184delta).
Any objections?

I'm puzzled by the status of this ticket. TonyC submitted a patch (the later of the two attachments), but I don't find any evidence that it was applied in blead.

On the other hand, the version of cpan/Digest-SHA/lib/Digest/SHA.pm in blead is 5.95 -- considerably beyond the 5.84_02 in Tony's patch.

The entry in perl5184delta is rather opaque. And no one ever responded to my request that a test be written demonstrating that the problem had been fixed.

Hence​: confusion.

Thank you very much.

A workaround was submitted with Digest​::SHA 5.85 in late June 2013.

See ...

  https://rt.cpan.org/Public/Bug/Display.html?id=86295

for background and details. James, you'll see why providing a test to
demonstrate the fix wasn't practical in this case.

Mark

@p5pRT
Copy link
Author

p5pRT commented Feb 27, 2016

From @mauke

Am Fr 26. Feb 2016, 21​:24​:39, mshelor@​cpan.org schrieb​:

A workaround was submitted with Digest​::SHA 5.85 in late June 2013.

See ...

https://rt.cpan.org/Public/Bug/Display.html?id=86295

for background and details. James, you'll see why providing a test to
demonstrate the fix wasn't practical in this case.

That link says​:

| I use the more cautious word 'appears' since the bug is difficult to reproduce reliably.

But your original message in this ticket says​:

| Before the patch is applied, this is what occurs​:
| $ $p18 -le "use Digest​::SHA; print Digest​::SHA->add(qq(a))->hexdigest"
| Segmentation fault

Is this even the same issue?

@p5pRT
Copy link
Author

p5pRT commented Feb 27, 2016

From mshelor@cpan.org

On 02/27/2016 02​:20 AM, l.mai@​web.de via RT wrote​:

Am Fr 26. Feb 2016, 21​:24​:39, mshelor@​cpan.org schrieb​:

A workaround was submitted with Digest​::SHA 5.85 in late June 2013.

See ...

https://rt.cpan.org/Public/Bug/Display.html?id=86295

for background and details. James, you'll see why providing a test to
demonstrate the fix wasn't practical in this case.

That link says​:

| I use the more cautious word 'appears' since the bug is difficult to reproduce reliably.

But your original message in this ticket says​:

| Before the patch is applied, this is what occurs​:
| $ $p18 -le "use Digest​::SHA; print Digest​::SHA->add(qq(a))->hexdigest"
| Segmentation fault

Is this even the same issue?

You're correct​: it isn't the same issue. perl #121421 is much much
simpler, in fact.

The #121421 issue was already resolved with the release of Digest​::SHA
5.87, as noted earlier in the thread.

I too am confused why this ticket remains open.

@p5pRT
Copy link
Author

p5pRT commented Feb 27, 2016

From @jkeenan

On Fri Feb 26 21​:24​:39 2016, mshelor@​cpan.org wrote​:

On 02/26/2016 04​:10 PM, James E Keenan via RT wrote​:

On Fri Feb 26 09​:25​:23 2016, mauke- wrote​:

On Wed Apr 16 20​:37​:20 2014, tonyc wrote​:

On Wed, Apr 16, 2014 at 07​:52​:11PM -0700, Mark Shelor wrote​:

Tony,

Is it too late to change my email address under AUTHORS to
mshelor@​cpan.org ?

It's not, since it hasn't been applied.

I've attached a new format-patched commit with the changed email
address.

CC​: p5p so it's picked up for the ticket.

Tony

I believe this ticket can be closed (it's listed in perl5184delta).
Any objections?

I'm puzzled by the status of this ticket. TonyC submitted a patch
(the later of the two attachments), but I don't find any evidence
that it was applied in blead.

On the other hand, the version of cpan/Digest-SHA/lib/Digest/SHA.pm
in blead is 5.95 -- considerably beyond the 5.84_02 in Tony's patch.

The entry in perl5184delta is rather opaque. And no one ever
responded to my request that a test be written demonstrating that the
problem had been fixed.

Hence​: confusion.

Thank you very much.

A workaround was submitted with Digest​::SHA 5.85 in late June 2013.

See ...

https://rt.cpan.org/Public/Bug/Display.html?id=86295

for background and details. James, you'll see why providing a test to
demonstrate the fix wasn't practical in this case.

Mark

Alright, then I have no objection to closing this ticket.

Thank you very much.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Feb 27, 2016

From @mauke

On Sat Feb 27 03​:24​:04 2016, mshelor@​cpan.org wrote​:

On 02/27/2016 02​:20 AM, l.mai@​web.de via RT wrote​:

Am Fr 26. Feb 2016, 21​:24​:39, mshelor@​cpan.org schrieb​:

A workaround was submitted with Digest​::SHA 5.85 in late June 2013.

See ...

https://rt.cpan.org/Public/Bug/Display.html?id=86295

for background and details. James, you'll see why providing a test
to
demonstrate the fix wasn't practical in this case.

That link says​:

| I use the more cautious word 'appears' since the bug is difficult
to reproduce reliably.

But your original message in this ticket says​:

| Before the patch is applied, this is what occurs​:
| $ $p18 -le "use Digest​::SHA; print Digest​::SHA->add(qq(a))-

hexdigest"
| Segmentation fault

Is this even the same issue?

You're correct​: it isn't the same issue. perl #121421 is much much
simpler, in fact.

The #121421 issue was already resolved with the release of Digest​::SHA
5.87, as noted earlier in the thread.

I too am confused why this ticket remains open.

This ticket is specifically about the 5.18.* series (and potentially blocking a 5.18.5 release), so blead/5.87 doesn't matter.

I can confirm that the patch in this ticket was applied in commit 0e7dab7 (but without the "[perl #121421]" part of the subject, which makes it slightly harder to find), which was released in Digest​::SHA 5.84_02 / perl 5.18.4.

corelist claims 5.18.4 still had Digest​::SHA 5.84_01, but I think that's a bug in Module​::CoreList​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=127624

Closing.

@p5pRT
Copy link
Author

p5pRT commented Feb 27, 2016

@mauke - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant