summaryrefslogtreecommitdiff
path: root/hwpfilter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-02-24 19:25:01 +0000
committerMiklos Vajna <vmiklos@collabora.co.uk>2018-02-26 10:10:55 +0100
commit98a02abac221fdceb38d65b802be672948fc6ce1 (patch)
treee9eb3f01d47d7533357ca3c6a0343102118bfbcc /hwpfilter
parent907efefd052782387dd5985ee417b915ac9b9692 (diff)
forcepoint #7 check ksc5601_2uni_page21 bounds
Change-Id: I578e7a63bb50f2088d35174d88f075c00469bad3 Reviewed-on: https://gerrit.libreoffice.org/50286 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'hwpfilter')
-rw-r--r--hwpfilter/source/hcode.cxx28
1 files changed, 11 insertions, 17 deletions
diff --git a/hwpfilter/source/hcode.cxx b/hwpfilter/source/hcode.cxx
index 31423c0a3db2..327dfc13dc07 100644
--- a/hwpfilter/source/hcode.cxx
+++ b/hwpfilter/source/hcode.cxx
@@ -1139,14 +1139,11 @@ int kssm_hangul_to_ucs2(hchar ch, hchar *dest)
hchar ksc5601_sym_to_ucs2 (hchar input)
{
unsigned char ch = sal::static_int_cast<unsigned char>(input >> 8);
- unsigned char ch2;
- int idx;
-
- ch2 = sal::static_int_cast<unsigned char>(input & 0xff);
- idx = (ch - 0xA1) * 94 + (ch2 - 0xA1);
- if (idx <= 1114 && idx >= 0){
- hchar value = ksc5601_2uni_page21[idx];
- return value ? value : 0x25a1;
+ unsigned char ch2 = sal::static_int_cast<unsigned char>(input & 0xff);
+ int idx = (ch - 0xA1) * 94 + (ch2 - 0xA1);
+ if (idx >= 0 && idx < static_cast<int>(SAL_N_ELEMENTS(ksc5601_2uni_page21))) {
+ hchar value = ksc5601_2uni_page21[idx];
+ return value ? value : 0x25a1;
}
return 0x25a1;
}
@@ -1154,15 +1151,12 @@ hchar ksc5601_sym_to_ucs2 (hchar input)
hchar ksc5601_han_to_ucs2 (hchar input)
{
unsigned char ch = sal::static_int_cast<unsigned char>(input >> 8);
- unsigned char ch2;
- int idx;
-
- ch2 = sal::static_int_cast<unsigned char>(input & 0xff);
- idx = (ch - 0xA1) * 94 + (ch2 - 0xA1);
- if (idx >= 3854){
- // Hanja : row 42 - row 93 : 3854 = 94 * (42-1)
- hchar value = ksc5601_2uni_page21[idx - 3854];
- return value ? value : '?';
+ unsigned char ch2 = sal::static_int_cast<unsigned char>(input & 0xff);
+ int idx = (ch - 0xA1) * 94 + (ch2 - 0xA1);
+ if (idx >= 3854 && idx < static_cast<int>(3854 + SAL_N_ELEMENTS(ksc5601_2uni_page21))) {
+ // Hanja : row 42 - row 93 : 3854 = 94 * (42-1)
+ hchar value = ksc5601_2uni_page21[idx - 3854];
+ return value ? value : '?';
}
return '?';
}