#16069 [Csd]: ICONV transliteration failure

From: Date: Sun, 04 Aug 2002 00:25:55 +0000
Subject: #16069 [Csd]: ICONV transliteration failure
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-15951@lists.php.net to get a copy of this message
ID: 16069 Updated by: yohgaki@php.net Reported By: readjust@deneb.freemail.ne.jp Status: Closed Bug Type: ICONV related Operating System: win32, Linux PHP Version: 4.3.0-dev New Comment: IIRC, libiconv is needed to perform transit with CP932. Previous Comments: ------------------------------------------------------------------------ [2002-08-03 09:34:29] msopacua@idg.nl If the test is correct, this still fails on BSD/OS. Testlog submitted to Yohgaki, to preserve charset. ------------------------------------------------------------------------ [2002-07-10 23:32:41] yohgaki@php.net This bug has been fixed in CVS. You can grab a snapshot of the CVS version at http://snaps.php.net/. In case this was a documentation problem, the fix will show up soon at http://www.php.net/manual/. In case this was a PHP.net website problem, the change will show up on the PHP.net site and on the mirror sites. Thank you for the report, and for helping us make PHP better. ------------------------------------------------------------------------ [2002-07-06 19:28:46] sniper@php.net Not fixed. (updated version too) ------------------------------------------------------------------------ [2002-07-05 16:39:54] readjust@deneb.freemail.ne.jp I have just tried again with the HEAD. -------------------------------- $ ./buildconf $ ./configure --with-iconv=/usr/lib \ --prefix=/home/koizumi/local $ make $ make install $ /home/koizumi/local/bin/php -q test.php (13 lines printed) Segmentation fault -------------------------------- Backtrace: #0 0x401f2e8f in chunk_free (ar_ptr=0x402a6620, p=0x1c775d9f) at malloc.c:3225 #1 0x401f2bf4 in __libc_free (mem=0x81d1a48) at malloc.c:3154 #2 0x40035602 in libiconv_close () from /usr/lib/libiconv.so.2 #3 0x08062fe9 in php_iconv_string (in_p=0x81d17cc "", in_len=32, out=0xbfffd060, out_len=0xbfffd064, in_charset=0x81d66b4 "CP932", out_charset=0x81d0db4 "EUC-JP//TRANSLIT", err=0xbfffd068) at /home/koizumi/src/php4/ext/iconv/iconv.c:194 #4 0x0806308f in php_if_iconv (ht=3, return_value=0x81d0d24, this_ptr=0x0, return_value_used=1) at /home/koizumi/src/php4/ext/iconv/iconv.c:292 (gdb) select-frame 3 (gdb) print out_size $1 = 144 (gdb) print out_left $2 = 0 -------------------------------- Now I realized that what is to blame for segv. ------------------------------------------ *out_len = out_size - out_left; out_buffer[*out_len] = '\0'; icv_close(cd); ------------------------------------------ Here's the patch. (I'll resend this one if you think it better) =================================================================== RCS file: /repository/php4/ext/iconv/iconv.c,v retrieving revision 1.39 diff -u -r1.39 iconv.c --- iconv.c 28 Jun 2002 07:12:32 -0000 1.39 +++ iconv.c 5 Jul 2002 20:35:50 -0000 @@ -164,7 +164,7 @@ I added 15 extra bytes for safety. <yohgaki@php.net> */ out_size = in_len * sizeof(ucs4_t) + 16; - out_buffer = (char *) emalloc(out_size); + out_buffer = (char *) emalloc(out_size+1); *out = out_buffer; out_p = out_buffer; ============================================== THIS PATCH DOESN'T REALLY FIX THE BUG #16069. ------------------------------------------------------------------------ [2002-07-05 14:45:10] sniper@php.net Doesn't segfault with 4.3.0-dev. (linux) I guess this can be closed? ------------------------------------------------------------------------ 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/16069 -- Edit this bug report at http://bugs.php.net/?id=16069&edit=1

« previous php.bugs (#15951) next »