Do not truncate syscall() return value to 32 bits
This commit is contained in:
parent
d7a74399bf
commit
30a6001f9c
|
@ -0,0 +1,32 @@
|
||||||
|
From f9344c91a4ca48288bba30dc94a2d712d0659670 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Oleg Nesterov <oleg@redhat.com>
|
||||||
|
Date: Wed, 4 Jul 2012 08:21:15 -0700
|
||||||
|
Subject: [PATCH] [perl #113980] pp_syscall: "I32 retval" truncates the
|
||||||
|
returned value
|
||||||
|
|
||||||
|
I noticed today that syscall(9, ...) (mmap) doesn't work for me.
|
||||||
|
|
||||||
|
The problem is obvious, pp_syscall() uses I32 for retval and the
|
||||||
|
"long" address doesn't fit into "int".
|
||||||
|
|
||||||
|
The one-liner below should fix the problem.
|
||||||
|
---
|
||||||
|
pp_sys.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/pp_sys.c b/pp_sys.c
|
||||||
|
index fb93732..c5d63ac 100644
|
||||||
|
--- a/pp_sys.c
|
||||||
|
+++ b/pp_sys.c
|
||||||
|
@@ -5456,7 +5456,7 @@ PP(pp_syscall)
|
||||||
|
register I32 items = SP - MARK;
|
||||||
|
unsigned long a[20];
|
||||||
|
register I32 i = 0;
|
||||||
|
- I32 retval = -1;
|
||||||
|
+ IV retval = -1;
|
||||||
|
|
||||||
|
if (PL_tainting) {
|
||||||
|
while (++MARK <= SP) {
|
||||||
|
--
|
||||||
|
1.7.11.4
|
||||||
|
|
|
@ -96,6 +96,9 @@ Patch12: perl-5.16.1-PATCH-perl-114220-h-not-equiv-to-h.patch
|
||||||
# Clear $@ before `do' I/O error, rhbz#834226, RT#113730
|
# Clear $@ before `do' I/O error, rhbz#834226, RT#113730
|
||||||
Patch13: perl-5.16.1-RT-113730-should-be-cleared-on-do-IO-error.patch
|
Patch13: perl-5.16.1-RT-113730-should-be-cleared-on-do-IO-error.patch
|
||||||
|
|
||||||
|
# Do not truncate syscall() return value to 32 bits, rhbz#838551, RT#113980
|
||||||
|
Patch14: perl-5.16.1-perl-113980-pp_syscall-I32-retval-truncates-the-retu.patch
|
||||||
|
|
||||||
|
|
||||||
# Update some of the bundled modules
|
# Update some of the bundled modules
|
||||||
# see http://fedoraproject.org/wiki/Perl/perl.spec for instructions
|
# see http://fedoraproject.org/wiki/Perl/perl.spec for instructions
|
||||||
|
@ -1330,6 +1333,7 @@ tarball from perl.org.
|
||||||
%patch11 -p1
|
%patch11 -p1
|
||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
%patch13 -p1
|
%patch13 -p1
|
||||||
|
%patch14 -p1
|
||||||
|
|
||||||
#copy the example script
|
#copy the example script
|
||||||
cp -a %{SOURCE5} .
|
cp -a %{SOURCE5} .
|
||||||
|
@ -1535,6 +1539,7 @@ pushd %{build_archlib}/CORE/
|
||||||
'Fedora Patch11: Do not access freed memory when cloning thread (RT#111610)' \
|
'Fedora Patch11: Do not access freed memory when cloning thread (RT#111610)' \
|
||||||
'Fedora Patch12: Match non-breakable space with /[\h]/ in ASCII mode (RT#114220)' \
|
'Fedora Patch12: Match non-breakable space with /[\h]/ in ASCII mode (RT#114220)' \
|
||||||
'Fedora Patch13: Clear $@ before "do" I/O error (RT#113730)' \
|
'Fedora Patch13: Clear $@ before "do" I/O error (RT#113730)' \
|
||||||
|
'Fedora Patch14: Do not truncate syscall() return value to 32 bits (RT#113980)' \
|
||||||
%{nil}
|
%{nil}
|
||||||
|
|
||||||
rm patchlevel.bak
|
rm patchlevel.bak
|
||||||
|
@ -2650,6 +2655,7 @@ sed \
|
||||||
- Do not access freed memory when cloning thread (bug #825749)
|
- Do not access freed memory when cloning thread (bug #825749)
|
||||||
- Match non-breakable space with /[\h]/ in ASCII mode (bug #844919)
|
- Match non-breakable space with /[\h]/ in ASCII mode (bug #844919)
|
||||||
- Clear $@ before `do' I/O error (bug #834226)
|
- Clear $@ before `do' I/O error (bug #834226)
|
||||||
|
- Do not truncate syscall() return value to 32 bits (bug #838551)
|
||||||
|
|
||||||
* Wed Sep 05 2012 Petr Pisar <ppisar@redhat.com> - 4:5.16.1-232
|
* Wed Sep 05 2012 Petr Pisar <ppisar@redhat.com> - 4:5.16.1-232
|
||||||
- Move App::Cpan from perl-Test-Harness to perl-CPAN (bug #854577)
|
- Move App::Cpan from perl-Test-Harness to perl-CPAN (bug #854577)
|
||||||
|
|
Loading…
Reference in New Issue