_citrus_iconv_convert and php bug

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

_citrus_iconv_convert and php bug

freebsd-i18n mailing list


Hi all,

I'm not familiar in C but may be somebody has idea about this bug in php
or/and iconv implementation in freebsd libc.

Shortly:

php -r 'echo iconv("UTF-8", "UTF-8", "Hello, world.\n");'
Bus error (core dumped)

bug desribed in a few places:
https://bugs.php.net/bug.php?id=74014
https://bugs.php.net/bug.php?id=72198

it seems bug does exist even in php 7.x.
I caught it in very old version php 5.6.40 - some old site on old joomla
framework.

Well, we have php.core and what we see:

uname -a
FreeBSD space 12.1-RELEASE-p4 FreeBSD 12.1-RELEASE-p4 GENERIC  amd64


gdb sapi/cli/php php.core
GNU gdb (GDB) 9.2 [GDB v9.2 for FreeBSD]

<skip>

Reading symbols from sapi/cli/php...
[New LWP 100454]
Core was generated by `sapi/cli/php -r echo iconv("UTF-8", "UTF-8",
"Hello, world.\n");'.
Program terminated with signal SIGBUS, Bus error.
#0  0x0000000801296711 in _citrus_iconv_convert (cv=0x80253a000,
in=0x7fffffffe190,
     inbytes=0x7fffffffe1a0, out=0x7fffffffe1b8, outbytes=0x7fffffffe1c0,
flags=0, nresults=0x0)
     at /usr/src/lib/libc/iconv/citrus_iconv.h:62
62      /usr/src/lib/libc/iconv/citrus_iconv.h: No such file or directory.
warning: File "/usr/local/src/php-5.6.40/.gdbinit" auto-loading has been
declined by your `auto-load safe-path' set to
"$debugdir:$datadir/auto-load".
To enable execution of this file add
--Type <RET> for more, q to quit, c to continue without paging--
         add-auto-load-safe-path /usr/local/src/php-5.6.40/.gdbinit
line to your configuration file "/root/.gdbinit".
To completely disable this security protection add
         set auto-load safe-path /
line to your configuration file "/root/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the
shell:
         info "(gdb)Auto-loading safe path"

(gdb) bt
#0  0x0000000801296711 in _citrus_iconv_convert (cv=0x80253a000,
in=0x7fffffffe190,
     inbytes=0x7fffffffe1a0, out=0x7fffffffe1b8, outbytes=0x7fffffffe1c0,
flags=0, nresults=0x0)
     at /usr/src/lib/libc/iconv/citrus_iconv.h:62
#1  __bsd_iconv (handle=0x80253a000, in=0x7fffffffe190,
szin=0x7fffffffe1a0, out=0x7fffffffe1b8,
     szout=0x7fffffffe1c0) at /usr/src/lib/libc/iconv/bsd_iconv.c:135
#2  0x000000000099cf7b in php_iconv_string (in_p=0x801cddca0 "Hello,
world.\n", in_len=14,
     out=0x7fffffffe208, out_len=0x7fffffffe210, out_charset=<optimized
out>,
     in_charset=<optimized out>) at ext/iconv/iconv.c:653
#3  0x000000000099a5dd in php_if_iconv (ht=<optimized out>,
return_value=0x801c9fa10,
     return_value_ptr=<optimized out>, this_ptr=<optimized out>,
return_value_used=<optimized out>)
     at ext/iconv/iconv.c:2490
#4  0x0000000000bded49 in zend_do_fcall_common_helper_SPEC
(execute_data=0x801c6bd20)
     at Zend/zend_vm_execute.h:558
#5  0x0000000000b9e2e8 in execute_ex (execute_data=0x801c6bd20) at
Zend/zend_vm_execute.h:363
#6  0x0000000000b65e21 in zend_eval_stringl (str=<optimized out>,
str_len=<optimized out>,
     retval_ptr=<optimized out>, string_name=<optimized out>) at
Zend/zend_execute_API.c:1080
#7  0x0000000000b6621c in zend_eval_stringl_ex (
     str=0x7fffffffedb0 "echo iconv(\"UTF-8\", \"UTF-8\", \"Hello,
world.\\n\");",
     str_len=-443987883, retval_ptr=0x7fffffffe1a0,
string_name=0x7fffffffe1b8 "@\372\311\001\b",
     handle_exceptions=1) at Zend/zend_execute_API.c:1127
#8  zend_eval_string_ex (
     str=0x7fffffffedb0 "echo iconv(\"UTF-8\", \"UTF-8\", \"Hello,
world.\\n\");",
     retval_ptr=0x7fffffffe1a0, string_name=0x7fffffffe1b8
"@\372\311\001\b", handle_exceptions=1)


a piece of code at ext/iconv/iconv.c:653:

                 result = iconv(cd, (char **) &in_p, &in_left, (char **) &out_p, &out_left);



That version of php, compiled under linux
(Linux test 4.4.217 #1 SMP Thu Mar 26 14:44:04 CDT 2020 x86_64 Intel(R)
Core(TM) i3-2120 CPU @ 3.30GHz GenuineIntel GNU/Linux)
works correctly.

Has anybody ideas how to fix it?

--
Best regards,
Stanislav
_______________________________________________
[hidden email] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-i18n
To unsubscribe, send any mail to "[hidden email]"
Reply | Threaded
Open this post in threaded view
|

Re: _citrus_iconv_convert and php bug

Thierry Thomas
Le mar. 23 juin 20 à 14:15:12 +0200, Stanislav Grinkin via freebsd-i18n <[hidden email]>
 écrivait :

> Hi all,

Hello,

> I'm not familiar in C but may be somebody has idea about this bug in php
> or/and iconv implementation in freebsd libc.
>
> Shortly:
>
> php -r 'echo iconv("UTF-8", "UTF-8", "Hello, world.\n");'
> Bus error (core dumped)
>
> bug desribed in a few places:
> https://bugs.php.net/bug.php?id=74014
> https://bugs.php.net/bug.php?id=72198
>
> it seems bug does exist even in php 7.x.
I just tested it with
/usr/local/bin/php was installed by package php72-7.2.31
and it works: no problem.

(on 12.1-STABLE)

> I caught it in very old version php 5.6.40 - some old site on old joomla
> framework.

Sorry, I don´t have this one anymore!
--
Th. Thomas.

signature.asc (949 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: _citrus_iconv_convert and php bug

freebsd-i18n mailing list


>> it seems bug does exist even in php 7.x.
>
> I just tested it with
> /usr/local/bin/php was installed by package php72-7.2.31
> and it works: no problem.
>
> (on 12.1-STABLE)
>
>> I caught it in very old version php 5.6.40 - some old site on old joomla
>> framework.
>
> Sorry, I don´t have this one anymore!
> --
> Th. Thomas.
>

Hi,
ok, seems bug does not exist with package php72-7.2.31.
And at the moment we have no problems with php-7.x
Unfortanelly we have not port of php5.
Only one way - try to compile it myself.
Because old joomla works only with old php, and nobody has time to move
site to new joomla... I moved it from linux to freebsd and php-iconv now
broken. Possible  somebody has ideas how to help...

--
Best regards,
Stanislav
_______________________________________________
[hidden email] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-i18n
To unsubscribe, send any mail to "[hidden email]"