Remove parsing decimal numbers in StringToCode().
For ToUnicode mapping, bfrange or bfchar should only contain
hexadecimal numbers wrapped inside "<>".
This CL remove the steps for parsing decimal numbers in
CPDF_ToUnicodeMap::StringToCode().
Bug: pdfium:1422
Change-Id: Iac7d4e4b5e4380e0afb6aa08cef9792370f382f3
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/64150
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Hui Yingst <nigi@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_tounicodemap.cpp b/core/fpdfapi/font/cpdf_tounicodemap.cpp
index 2c9bb55..b275434 100644
--- a/core/fpdfapi/font/cpdf_tounicodemap.cpp
+++ b/core/fpdfapi/font/cpdf_tounicodemap.cpp
@@ -74,19 +74,13 @@
// static
uint32_t CPDF_ToUnicodeMap::StringToCode(ByteStringView str) {
size_t len = str.GetLength();
- if (len == 0)
+ if (len == 0 || str[0] != '<')
return 0;
uint32_t result = 0;
- if (str[0] == '<') {
- for (size_t i = 1; i < len && std::isxdigit(str[i]); ++i)
- result = result * 16 + FXSYS_HexCharToInt(str.CharAt(i));
- return result;
+ for (size_t i = 1; i < len && std::isxdigit(str[i]); ++i) {
+ result = result * 16 + FXSYS_HexCharToInt(str.CharAt(i));
}
-
- for (size_t i = 0; i < len && std::isdigit(str[i]); ++i)
- result = result * 10 + FXSYS_DecimalCharToInt(str.CharAt(i));
-
return result;
}
diff --git a/core/fpdfapi/font/cpdf_tounicodemap_unittest.cpp b/core/fpdfapi/font/cpdf_tounicodemap_unittest.cpp
index 4a5dc25..bca94f3 100644
--- a/core/fpdfapi/font/cpdf_tounicodemap_unittest.cpp
+++ b/core/fpdfapi/font/cpdf_tounicodemap_unittest.cpp
@@ -8,11 +8,10 @@
TEST(cpdf_tounicodemap, StringToCode) {
EXPECT_EQ(0u, CPDF_ToUnicodeMap::StringToCode(""));
+ EXPECT_EQ(0u, CPDF_ToUnicodeMap::StringToCode("12"));
EXPECT_EQ(194u, CPDF_ToUnicodeMap::StringToCode("<c2"));
EXPECT_EQ(162u, CPDF_ToUnicodeMap::StringToCode("<A2"));
EXPECT_EQ(2802u, CPDF_ToUnicodeMap::StringToCode("<Af2"));
- EXPECT_EQ(12u, CPDF_ToUnicodeMap::StringToCode("12"));
- EXPECT_EQ(128u, CPDF_ToUnicodeMap::StringToCode("128"));
}
TEST(cpdf_tounicodemap, StringToWideString) {