From:             babansky at mail dot ru
Operating system: Suse 8.2 with Apache2
PHP version:      4CVS-2003-07-02 (stable)
PHP Bug Type:     Reproducible crash
Bug description:  imagettfbbox and ImageTTFText cause Apache2 segfault (bug #23122 not 
solved?)

Description:
------------
If PHP is configured with an external GD library like:

./configure --prefix=/usr/local/apache/PHP
--with-apxs2=/usr/local/apache/bin/apxs --enable-debug --enable-track-vars
--enable-bcmath --enable-exif --enable-ftp --with-curl=/usr
--with-mysql=/usr --with-zlib=/usr  --with-gd=/usr --with-tiff-dir=/usr
--with-jpeg-dir=/usr  --with-png-dir=/usr
--with-freetype-dir=/usr/inlude/freetype2 --enable-gd-native-ttf
--enable-sysvsem=yes --enable-sysvshm=yes

and you try to generate images (jpg, png, etc and call the script more
than once, it crashes usually on second time.

Note: this problem is related to external GD library (in my case
GD-2.015). I didn't see the problem with PHP bundled GD. Also this problem
is related to imagettfbbox and ImageTTFText functions

Reproduce code:
---------------
<?php
  Header("Content-type: image/png");
  Header(" Content-Disposition: inline");
  $font = "TTF/tt1.ttf";
  if(!isset($s)) $s=26;
  if(!isset($pre)) $pre=0;
  if(!isset($text)) $text="Some text";
  $size = ($s,0,$font,$text);
  $dx = abs($size[2]-$size[0]);
  $dy = abs($size[5]-$size[3]);
  $xpad=16;
  $ypad=16;
  $im = imagecreate($dx+$xpad+$pre,$dy+$ypad);
  $blue = ImageColorAllocate($im, 119,162,193);
  $black = ImageColorAllocate($im, 0,0,0);
  $white = ImageColorAllocate($im, 255,255,255);
  ImageTTFText($im, $s, 0, (int)($xpad/2)+$pre+1, $dy+(int)($ypad/2),
$black, "$font", $text);
  ImageTTFText($im, $s, 0, (int)($xpad/2)+$pre, $dy+(int)($ypad/2)-1,
$white, "$font", $text);
  Imagepng($im);
  ImageDestroy($im);
?> 


Expected result:
----------------
just a single button-like image

Actual result:
--------------
Program received signal SIGSEGV, Segmentation fault.
0xbdca7840 in ?? ()
(gdb) bt
#0  0xbdca7840 in ?? ()
#1  0x40577a49 in gdImageStringFTEx (im=0x0, brect=0xbfffc220, fg=-1,
    fontlist=0x405006a0
"/proba-php/php4-STABLE-200307020730/main/php_variables.c", ptsize=26,
angle=0, x=-1, y=-1,
    string=0x81ac3dc "Some text", strex=0x0) at gdft.c:856
#2  0x405778f4 in gdImageStringFT (im=0x0, brect=0xbfffc220, fg=-1,
fontlist=0x81ac114 "TTF/tt1.ttf", ptsize=26, angle=0,
    x=-1, y=-1, string=0x81ac3dc "Some text") at gdft.c:784
#3  0x403e34f7 in php_imagettftext_common (ht=4, return_value=0x81ac45c,
this_ptr=0x0, return_value_used=1, mode=1,
    extended=0) at /proba-php/php4-STABLE-200307020730/ext/gd/gd.c:3059
#4  0x403e2997 in zif_imagettfbbox (ht=4, return_value=0x81ac45c,
this_ptr=0x0, return_value_used=1)
    at /proba-php/php4-STABLE-200307020730/ext/gd/gd.c:2939
#5  0x404da19a in execute (op_array=0x81ae02c) at
/proba-php/php4-STABLE-200307020730/Zend/zend_execute.c:1616
#6  0x404c8d16 in zend_execute_scripts (type=8, retval=0x0, file_count=3)
    at /proba-php/php4-STABLE-200307020730/Zend/zend.c:886
#7  0x40492aa6 in php_execute_script (primary_file=0xbffff1f0) at
/proba-php/php4-STABLE-200307020730/main/main.c:1685
#8  0x404e0064 in php_handler (r=0x8210470) at
/proba-php/php4-STABLE-200307020730/sapi/apache2handler/sapi_apache2.c:525
#9  0x08095956 in ap_run_handler (r=0x8210470) at config.c:195
#10 0x08095f38 in ap_invoke_handler (r=0x8210470) at config.c:401
#11 0x0808438d in ap_process_request (r=0x8210470) at http_request.c:288
#12 0x0807ff69 in ap_process_http_connection (c=0x81a0260) at
http_core.c:293
#13 0x0809f9e6 in ap_run_process_connection (c=0x81a0260) at
connection.c:85
#14 0x0809432d in child_main (child_num_arg=-1073757664) at prefork.c:696
#15 0x0809446e in make_child (s=0x80dce50, slot=0) at prefork.c:736
#16 0x0809454f in startup_children (number_to_start=5) at prefork.c:808
#17 0x08094c09 in ap_mpm_run (_pconf=0x8093b00, plog=0x81120b8, s=0x5) at
prefork.c:1024
#18 0x0809a039 in main (argc=2, argv=0xbffff4d4) at main.c:660
#19 0x402708ae in __libc_start_main () from /lib/libc.so.6


-- 
Edit bug report at http://bugs.php.net/?id=24455&edit=1
-- 
Try a CVS snapshot:         http://bugs.php.net/fix.php?id=24455&r=trysnapshot
Fixed in CVS:               http://bugs.php.net/fix.php?id=24455&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=24455&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=24455&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=24455&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=24455&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=24455&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=24455&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=24455&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=24455&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=24455&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=24455&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=24455&r=isapi
Install GNU Sed:            http://bugs.php.net/fix.php?id=24455&r=gnused

Reply via email to