ID: 32893
User updated by: php at fiddaman dot net
Reported By: php at fiddaman dot net
-Status: Feedback
+Status: Open
Bug Type: GD related
Operating System: Solaris 9
PHP Version: 4.3.11
Assigned To: pajoye
New Comment:
Here's a patch which fixes the problem. The variable being passed to
the zend argument parser was too small to hold the result (int versus
long).
--- ext/gd/gd.c~ 2005-05-01 11:36:21.134419000 +0000
+++ ext/gd/gd.c 2005-05-01 11:42:37.369849000 +0000
@@ -3017,7 +3017,8 @@
{
zval *IM, *EXT = NULL;
gdImagePtr im=NULL;
- int col = -1, x = -1, y = -1, str_len, fontname_len, i,
brect[8];
+ long col = -1, x = -1, y = -1;
+ int str_len, fontname_len, i, brect[8];
double ptsize, angle;
unsigned char *str = NULL, *fontname = NULL;
char *error = NULL;
I'm using freetype 2.1.3 and gd 2.0.15 but it wasn't getting to even
call a function in those libraries.
A simpler test case which doesn't need the font file. It generates an
error in 4.3.10 but still crashes the snapshot.
% cat test
<?php
$img = imagecreate(400, 70);
imagettftext($img, 11/81*64, 0, 0, 27, 0, "/dev/null",
"test");
?>
% ./php4-STABLE-200504301042/sapi/cli/php test
zsh: bus error (core dumped) ./php4-STABLE-200504301042/sapi/cli/php
test
% ./php-4.3.10/sapi/cli/php test
PHP Warning: imagettftext(): Could not read font in
/spool/src/build/test on line 3
Previous Comments:
------------------------------------------------------------------------
[2005-05-01 01:29:04] [EMAIL PROTECTED]
Which Freetype version do you use?
Please give us a link to the TTF file you use.
------------------------------------------------------------------------
[2005-04-30 13:53:31] php at fiddaman dot net
Same result with the snapshot:
Starting program:
/spool/src/build/php4-STABLE-200504301042/sapi/cli/php t
Program received signal SIGSEGV, Segmentation fault.
0x00000001001a6df4 in zend_parse_va_args (num_args=4,
type_spec=0x10023d1b3 "lllss|a", va=0xffffffff7fffe978, flags=0)
at /spool/src/build/php4-STABLE-200504301042/Zend/zend_API.c:260
260 *p =
Z_LVAL_PP(arg);
it looks like a memory alignment problem, the SPARC MMU won't allow a
32 or 64-bit read that isn't aligned.
I added this just before line 260:
zend_printf("Alignment: %d\n", __alignof__(arg));
which gives:
% sapi/cli/php t
Alignment: 8
zsh: bus error (core dumped) sapi/cli/php t
------------------------------------------------------------------------
[2005-04-30 03:45:50] [EMAIL PROTECTED]
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
I can't reproduce this crash.
------------------------------------------------------------------------
[2005-04-29 21:26:27] php at fiddaman dot net
Description:
------------
PHP crashes in imagettftext - worked fine in 4.3.10
./configure \
--prefix=/opt/php \
--with-exec-dir=/opt/php/bin \
--with-apxs2=/opt/apache/bin/apxs \
--enable-memory-limit \
--with-iconv \
--enable-ftp \
--enable-mbstring \
--with-mbstring=all \
--with-gettext \
--enable-calendar \
--with-mime-magic \
--with-mysql \
--with-mysqli=/opt/mysql/bin/mysql_config \
\
--with-openssl=/opt/openssl \
--with-mysql=/opt/mysql \
--with-gdbm=/opt/GNUgdbm \
--with-db4=/opt/newdb \
--with-dom=/opt/libxml2 \
--with-gmp=/opt/GNUmp \
--with-mcrypt=/opt/libmcrypt \
\
--with-imap=/opt/c-client \
--with-imap-ssl=/opt/openssl \
\
--with-zlib=/usr \
--with-zlib-dir=/usr \
--with-bz2=/usr \
\
--with-gd \
--with-jpeg-dir=/opt/libjpg \
--with-png-dir=/opt/libpng \
--with-freetype-dir=/opt/freetype
Reproduce code:
---------------
<?php
$img = imagecreate(400, 70);
$font_colour = imagecolorallocate($img, 0, 0x50, 0);
imagettftext($img, 11/81*64, 0, 0, 27,
"$font_colour", "/tmp/federation.ttf",
"test");
imagedestroy($img);
?>
Expected result:
----------------
No errors.
Actual result:
--------------
#0 0x00000001001a70b4 in zend_parse_va_args (num_args=4,
type_spec=0x10023cd7b "lllss|a", va=0xffffffff7fffe898, flags=0)
at /spool/src/build/php-4.3.11/Zend/zend_API.c:260
#1 0x00000001001a7b18 in zend_parse_parameters (num_args=8,
type_spec=0x10023cd78 "rddlllss|a")
at /spool/src/build/php-4.3.11/Zend/zend_API.c:552
#2 0x0000000100071a7c in php_imagettftext_common (ht=8,
return_value=0x10061dd28, this_ptr=0x0, return_value_used=0,
mode=0,
extended=0) at /spool/src/build/php-4.3.11/ext/gd/gd.c:3042
#3 0x00000001001bb0c4 in execute (op_array=0x10063b2a8)
at /spool/src/build/php-4.3.11/Zend/zend_execute.c:1654
#4 0x00000001001a64b0 in zend_execute_scripts (type=8, retval=0x0,
file_count=3) at /spool/src/build/php-4.3.11/Zend/zend.c:926
#5 0x0000000100173ba0 in php_execute_script
(primary_file=0xffffffff7ffffaa0)
at /spool/src/build/php-4.3.11/main/main.c:1745
#6 0x00000001001c3f08 in main (argc=2, argv=0xffffffff7ffffb98)
at /spool/src/build/php-4.3.11/sapi/cli/php_cli.c:828
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32893&edit=1