| Summary: | Новую версию PECL GMagick | ||
|---|---|---|---|
| Product: | Branch p7 | Reporter: | Vitaly Lipatov <lav> |
| Component: | php5-gmagick | Assignee: | Andrey Cherepanov <cas> |
| Status: | CLOSED FIXED | QA Contact: | qa-p7 <qa-p7> |
| Severity: | normal | ||
| Priority: | P3 | ||
| Version: | не указана | ||
| Hardware: | all | ||
| OS: | Linux | ||
|
Description
Vitaly Lipatov
2013-10-13 00:58:29 MSK
В Сизифе libGraphicsMagick-1.3.18-alt2 php5-gmagick-5.4.17.20130704-alt1 и бага не воспроизводится. Упростил тест:
#!/usr/bin/php
<?php
$image = new Gmagick();
// 1x1 gif
$data = base64_decode('R0lGODlhAQABAIAAAMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
$image->readImageBlob($data);
Program received signal SIGSEGV, Segmentation fault.
strlcpy (dst=<optimized out>, src=0x0, siz=siz@entry=2053) at strlcpy.c:41
41 if ((*d++ = *s++) == 0)
(gdb) bt
#0 strlcpy (dst=<optimized out>, src=0x0, siz=siz@entry=2053) at strlcpy.c:41
#1 0x00007ffff005feb5 in CopyMagickString (destination=<optimized out>, source=<optimized out>, length=length@entry=2053) at wand/magick_compat.c:76
#2 0x00007ffff006a945 in MagickSetImageFilename (wand=0x8bfc30, filename=<optimized out>) at wand/magick_wand.c:8012
#3 0x00007ffff02931b2 in zim_gmagick_readimageblob (ht=<optimized out>, return_value=0x895178, return_value_ptr=<optimized out>, this_ptr=0x8951c8,
return_value_used=<optimized out>) at /usr/src/debug/php5-gmagick-5.3.27.20130711/gmagick_methods.c:3082
#4 0x00007fffec553844 in ?? () from /usr/lib64/php/5.3.27/extensions/suhosin.so
У меня пакет php5-gmagick-5.3.27.20130711-alt0.M70P.1 Удивляюсь, но я не смог такого тэга сборки в http://git.altlinux.org/gears/p/php5-gmagick.git?p=php5-gmagick.git;a=shortlog;h=refs/heads/p7 Поэтому не представляю, что предпринять. Перейти на php 5.4 так сразу не могу, он сильно несовместим. (gdb) l /usr/src/debug/php5-gmagick-5.3.27.20130711/gmagick_methods.c:3070
3065 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!", &image_string, &image_string_len, &filename, &filename_len) == FAILURE) {
3066 return;
3067 }
...
3081 /* Even if filename is null we need to give a name here. Otherwise segfaults will happen */
3082 MagickSetImageFilename(intern->magick_wand, filename);
Я так понимаю, filename предполагается быть заполненным, но этого не случилось
Второй параметр функции не обязателен:
bool Imagick::readImageBlob ( string $image [, string $filename ] )
...
ZEND_BEGIN_ARG_INFO_EX(gmagick_readimageblob_args, 0, 0, 1)
<------>ZEND_ARG_INFO(0, imageContents)
<------>ZEND_ARG_INFO(0, filename)
ZEND_END_ARG_INFO()
http://www.php.net/manual/en/imagick.readimageblob.php
В общем, в новой версии php-gmagick добавлено:
<------>/* Even if filename is null we need to give a name here. Otherwise segfaults will happen */
<------>if (!filename)
<------><------>filename = "";
В качестве обходного варианта можно указывать пустую строку вторым параметром к readImageBlob.
Патч делать к php5-gmagick-5.3..?
Переименовываю тогда: У нас тут старая версия PECL GMagick, в которой ошибка в функции readImageBlob() и нет функции getImageBlob(); Чтобы проблемы ушли, надо обновить версию. (В ответ на комментарий №5)
> Переименовываю тогда:
> У нас тут старая версия PECL GMagick, в которой ошибка в функции
> readImageBlob() и нет функции getImageBlob();
> Чтобы проблемы ушли, надо обновить версию.
До какой версии? Последней 5.3.x из апстрима?
(В ответ на комментарий №6) ...> > У нас тут старая версия PECL GMagick, в которой ошибка в функции ... > > Чтобы проблемы ушли, надо обновить версию. > До какой версии? Последней 5.3.x из апстрима? Достаточно до той, которая в Сизифе. Это правильный путь, в Сизифе она уже обкаталась, можно и в p7 перенести. php5-gmagick-5.3.27.20130711-alt0.M70P.2 -> p7: * Tue Feb 25 2014 Andrey Cherepanov <cas@altlinux> 5.3.27.20130711-alt0.M70P.2 - Backport new version to p7 (ALT #29462) * Tue Feb 25 2014 cas <cas@altlinux> 5.3.27.20130711-alt0.M70P.2 - Rebuild with php5-5.3.27.20130711-alt0.M70P.2 |