From 6e230d11837f3ae7b375ea69d7905f0d18eb79e5 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Wed, 6 Jun 2012 18:39:10 +0530 Subject: 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 --- iconvdata/ibm930.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'iconvdata') diff --git a/iconvdata/ibm930.c b/iconvdata/ibm930.c index 25a9be02d8..587d54f08b 100644 --- a/iconvdata/ibm930.c +++ b/iconvdata/ibm930.c @@ -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 , 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')) \ { \ -- cgit v1.2.1