Hide Forgot
+++ This bug was initially created as a clone of Bug #720610 +++ Created attachment 512377 [details] proposed patch Description of problem: string repeat count > 2^31 causes heap corruption Version-Release number of selected component (if applicable): perl-5.12.4-159.fc15.x86_64 How reproducible: every time Steps to Reproduce: 1. perl -le 'print "v"x(2**31+1)' 2. 3. Actual results: segfault Expected results: 2^31+1 'v's followed by a newline on output Additional info: http://thread.gmane.org/gmane.comp.lang.perl.perl5.porters/96812 https://rt.perl.org/rt3/Ticket/Display.html?id=94560 Patch attached. ---- RHEL-6 (perl-5.10.1-119.el6.x86_64) affected. I could not achieve segfault but invalid characters were printed.
This request was evaluated by Red Hat Product Management for inclusion in the current release of Red Hat Enterprise Linux. Because the affected component is not scheduled to be updated in the current release, Red Hat is unfortunately unable to address this request at this time. Red Hat invites you to ask your support representative to propose this request, if appropriate and relevant, in the next release of Red Hat Enterprise Linux. If you would like it considered as an exception in the current release, please ask your support representative.
*** Bug 720652 has been marked as a duplicate of this bug. ***
The patch changes API. I will use different approach proposed in bug #862413. That means interpreter will abort instead of accepting so large numbers.
Created attachment 625851 [details] Fix refusing big numbers
The fix (In reply to comment #7) > Created attachment 625851 [details] > Fix refusing big numbers This is not sufficient on i686 because value there an explicit check before that wraps count number to IV_MAX which is 2 less than I32_MAX (for unknown reason), pp.c:1493: if (uv > IV_MAX) count = IV_MAX; /* The best we can do? */ We need to croak here too, otherwise all requiest bigger than 2^32-2 gets wrapped to this value and then not all bytes get initialized properly.
Created attachment 657636 [details] Fix case of 2^32±1 repeat counter. This patch is needed on i686 to prevent silent data corruption.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2013-0444.html