- rt#33242, rhbz#459918. Segfault after reblessing objects in Storable.

- rhbz#465728 upgrade Simple::Pod to 3.07
This commit is contained in:
Marcela Mašláňová 2008-10-07 13:40:22 +00:00
parent 22856c1cef
commit b49264de86
3 changed files with 1274 additions and 1 deletions

1202
perl-5.10.0-PodSimple.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,57 @@
diff -up perl-5.10.0/ext/Storable/Storable.xs.old perl-5.10.0/ext/Storable/Storable.xs
--- perl-5.10.0/ext/Storable/Storable.xs.old 2007-12-18 11:47:07.000000000 +0100
+++ perl-5.10.0/ext/Storable/Storable.xs 2008-09-30 14:03:38.000000000 +0200
@@ -4561,7 +4561,13 @@ static SV *retrieve_overloaded(pTHX_ stc
* WARNING: breaks RV encapsulation.
*/
- sv_upgrade(rv, SVt_RV);
+ if (cname) {
+ /* No need to do anything, as rv will already be PVMG. */
+ assert (SvTYPE(rv) >= SVt_RV);
+ } else {
+ sv_upgrade(rv, SVt_RV);
+ }
+
SvRV_set(rv, sv); /* $rv = \$sv */
SvROK_on(rv);
diff -up perl-5.10.0/ext/Storable/t/overload.t.old perl-5.10.0/ext/Storable/t/overload.t
--- perl-5.10.0/ext/Storable/t/overload.t.old 2007-12-18 11:47:07.000000000 +0100
+++ perl-5.10.0/ext/Storable/t/overload.t 2008-09-30 14:05:04.000000000 +0200
@@ -25,7 +25,7 @@ sub ok;
use Storable qw(freeze thaw);
-print "1..16\n";
+print "1..20\n";
package OVERLOADED;
@@ -59,6 +59,14 @@ sub make {
return $self;
}
+package SCALAR_REF_TO_OVER;
+
+sub create {
+my ($class) = @_;
+my $over = bless {}, 'OVER';
+return bless \$over, $class;
+}
+
package OVER;
use overload
@@ -103,4 +111,11 @@ ok 13, $@ eq "";
ok 14, ref ($t) eq 'REF';
ok 15, ref ($$t) eq 'HAS_OVERLOAD';
ok 16, $$$t eq 'snow';
+$c = SCALAR_REF_TO_OVER->create();
+# Don't segfault here
+$d = thaw freeze $c;
+ok 17, ref($c) eq 'SCALAR_REF_TO_OVER';
+ok 18, ref($d) eq 'SCALAR_REF_TO_OVER';
+ok 19, ref($$c) eq 'OVER';
+ok 20, ref($$d) eq 'OVER';
1;

View File

@ -7,7 +7,7 @@
Name: perl
Version: %{perl_version}
Release: 46%{?dist}
Release: 47%{?dist}
Epoch: %{perl_epoch}
Summary: The Perl programming language
Group: Development/Languages
@ -91,6 +91,12 @@ Patch22: perl-5.10.0-TestSimple0.80.patch
# Archive::Tar update to 1.38 version
Patch23: perl-5.10.0-ArchiveTar1.38.patch
# Storable segfaults when objects are reblessed rt#33242
Patch24: perl-5.10.0-Storable.patch
# Pod::Simple 3.07
Patch25: perl-5.10.0-PodSimple.patch
BuildRoot: %{_tmppath}/%{name}-%{perl_version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: tcsh, dos2unix, man, groff
BuildRequires: gdbm-devel, db4-devel, zlib-devel
@ -821,6 +827,8 @@ upstream tarball from perl.org.
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
#
# Candidates for doc recoding (need case by case review):
@ -1046,6 +1054,8 @@ perl -x patchlevel.h 'Fedora Patch20: pos function handle unicode correct'
perl -x patchlevel.h 'Fedora Patch21: CGI.pm bug in exists() on tied param hash'
perl -x patchlevel.h 'Fedora Patch22: Update Test::Simple to 0.80'
perl -x patchlevel.h 'Fedora Patch23: Update Archive::Tar 1.38'
perl -x patchlevel.h 'Fedora Patch24: Storable fix'
perl -x patchlevel.h 'Fedora Patch25: Update to Pod::Simple 3.07'
%clean
rm -rf $RPM_BUILD_ROOT
@ -1653,6 +1663,10 @@ make test
# Old changelog entries are preserved in CVS.
%changelog
* Tue Oct 07 2008 Marcela Mašláňová <mmaslano@redhat.com> 4:5.10.0-47.fc10
- rt#33242, rhbz#459918. Segfault after reblessing objects in Storable.
- rhbz#465728 upgrade Simple::Pod to 3.07
* Wed Oct 1 2008 Stepan Kasal <skasal@redhat.com> - 4:5.10.0-46
- also preserve the timestamp of AUTHORS; move the fix to the recode
function, which is where the stamps go wrong