mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
Fix validation check when converting from ibm930 to utf
[BZ #14134] When converting IBM930 code with iconv(), if IBM930 code which includes invalid multibyte character "0xffff" is specified, then iconv() segfaults. This is easy to see using the following command: echo '0x0e 0x43 0x8c 0xff 0xff 0x43 0xbd 0x43 0xbd' | xxd -r | iconv -f IBM930 -t UTF-8
This commit is contained in:
parent
1b671feb61
commit
6e230d1183
@ -1,3 +1,10 @@
|
||||
2012-06-06 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
[BZ #14134]
|
||||
* iconvdata/ibm930.c (BODY) [FROM_LOOP]: Check for invalid
|
||||
character 0xffff that matches the last element of the
|
||||
conversion table.
|
||||
|
||||
2012-06-05 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/ieee754/ldbl-128ibm/e_fmodl.c: Fix for wrong ldbl128-ibm
|
||||
|
2
NEWS
2
NEWS
@ -29,7 +29,7 @@ Version 2.16
|
||||
13963, 13967, 13968, 13970, 13973, 13979, 13983, 13986, 13996, 14012,
|
||||
14027, 14033, 14034, 14036, 14040, 14043, 14044, 14048, 14049, 14053,
|
||||
14055, 14059, 14064, 14075, 14080, 14083, 14103, 14104, 14109, 14112,
|
||||
14122, 14123, 14153, 14183, 14188, 14199
|
||||
14122, 14123, 14134, 14153, 14183, 14188, 14199
|
||||
|
||||
* Support for the x32 ABI on x86-64 added. The x32 target is selected by
|
||||
configuring glibc with:
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Conversion from and to IBM930.
|
||||
Copyright (C) 2000-2002, 2008 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Masahide Washizawa <washi@yamato.ibm.co.jp>, 2000.
|
||||
|
||||
@ -162,7 +162,8 @@ enum
|
||||
while (ch > rp2->end) \
|
||||
++rp2; \
|
||||
\
|
||||
if (__builtin_expect (ch < rp2->start, 0) \
|
||||
if (__builtin_expect (rp2->start == 0xffff, 0) \
|
||||
|| __builtin_expect (ch < rp2->start, 0) \
|
||||
|| (res = __ibm930db_to_ucs4[ch + rp2->idx], \
|
||||
__builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
|
||||
{ \
|
||||
|
Loading…
Reference in New Issue
Block a user