ID:               20927
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Open
+Status:           Assigned
 Bug Type:         Strings related
 Operating System: Red Hat Linux 8.0 on Intel
-PHP Version:      4.3.0RC2
+PHP Version:      4.3.0RC3
 Assigned To:      derick
 New Comment:

Okay, now I could verify this (with 4.3.0RC3). Going to fix this
soonish.


Previous Comments:
------------------------------------------------------------------------

[2002-12-11 20:15:23] [EMAIL PROTECTED]

A more dramatic example:  The following script, under PHP 4.1.2,
prints:

Length of original string:  130
Length of break string:     11264
Length of wrapped string:   214127
Size allocated by 4.3.0RC2: 173596
BUFFER OVERFLOW by 40531 bytes!

With 4.3.0RC2, it segfaults.

--
David.

<?php
$part = "1234567890 X ";
$string = "";
for ($i=0; $i<10; $i++) {
    $string .= $part;
}

$break = "a-very-long-break-string-to-clobber-the-heap";
for ($i=0; $i<8; $i++) {
    $break .= $break;
}

$linelength = 10;
$wrapped = wordwrap($string, $linelength, $break, 1);

$textlen = strlen($string);
print("Length of original string:  $textlen\n");
$breakcharlen = strlen($break);
print("Length of break string:     $breakcharlen\n");
$newtextlen = strlen($wrapped);
print("Length of wrapped string:   $newtextlen\n");

$buffer = $textlen +
          intval(($textlen/$linelength + 1) * $breakcharlen * 1.1) +
1;

print("Size allocated by 4.3.0RC2: $buffer\n");
$overflow = $newtextlen - $buffer;
if ($overflow > 0) {
    print ("BUFFER OVERFLOW by $overflow bytes!\n");
}

?>

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

[2002-12-11 15:01:15] [EMAIL PROTECTED]

Ah, the bug might not show up on Red Hat 7.1, probably because of glibc
differences.  Anyway, here's my system:

$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--disable-checking --host=i386-redhat-linux --with-system-zlib
--enable-__cxa_atexit
Thread model: posix
gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)

$ ldd /usr/local/bin/php
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x4002f000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x4005d000)
        libm.so.6 => /lib/i686/libm.so.6 (0x4006f000)
        libdl.so.2 => /lib/libdl.so.2 (0x40091000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x40094000)
        libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

$ rpm -q glibc
glibc-2.2.93-5

Regards,

David.

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

[2002-12-11 14:52:13] [EMAIL PROTECTED]

I'm running RedHat 7.1, and the last script still doesn't crash for me,
and no output from valgrind at all...

gcc = 2.96 (stock redhat 7.1)

What is your gcc version?

Derick

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

[2002-12-11 14:43:18] [EMAIL PROTECTED]

Are you running on Red Hat 8.0?

I consistently get a crash.  It's also obvious that the buffer
allocated is 135 bytes, and the length of the wrapped string is 138. 
So if you're not getting a crash, it's just luck.  Try this script
instead:

<?php
$x = "ADV:CLAIM YOUR FORTUNE NOW !!MAKE";
$x .= " xxxxxxxxxxHUNDREDS OF THOUSANDSxxxxxxxxxxxx";
$b = "CANITBREAKFOO";
for ($i=0; $i<1000; $i++) {
  $y = wordwrap($x, 20, $b, 1);
}
?>

That should exercise malloc() a lot more.

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

[2002-12-11 14:38:23] [EMAIL PROTECTED]

I still can't get it to crash here though, even with your configure
line and scripts. Valgrind doesn't report anything either. 

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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/20927

-- 
Edit this bug report at http://bugs.php.net/?id=20927&edit=1

Reply via email to