Remove FXSYS_wcsnicmp() and its unsafe buffer usage.
Use WideStringView::EqualsASCIINoCase() in all remaining cases.
Change-Id: I9a83e74c92189d20eab7b6fd417ecdb6abf5eb18
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/117031
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
diff --git a/core/fxcrt/fx_extension.cpp b/core/fxcrt/fx_extension.cpp
index 77afea1..d9206af 100644
--- a/core/fxcrt/fx_extension.cpp
+++ b/core/fxcrt/fx_extension.cpp
@@ -140,24 +140,6 @@
return dstStr;
}
-int32_t FXSYS_wcsnicmp(const wchar_t* s1, const wchar_t* s2, size_t count) {
- DCHECK(s1);
- DCHECK(s2);
- DCHECK(count > 0);
-
- // SAFETY: TODO(tsepez): This is UNSAFE_BUFFER_USAGE as well.
- UNSAFE_BUFFERS({
- while (count-- > 0) {
- wchar_t wch1 = static_cast<wchar_t>(FXSYS_towlower(*s1++));
- wchar_t wch2 = static_cast<wchar_t>(FXSYS_towlower(*s2++));
- if (wch1 != wch2) {
- return wch1 > wch2 ? 1 : -1;
- }
- }
- });
- return 0;
-}
-
void FXSYS_IntToTwoHexChars(uint8_t n, char* buf) {
static const char kHex[] = "0123456789ABCDEF";
// SAFETY: TODO(tsepez): This is UNSAFE_BUFFER_USAGE as well.
diff --git a/core/fxcrt/fx_extension.h b/core/fxcrt/fx_extension.h
index ae94479..4b55094 100644
--- a/core/fxcrt/fx_extension.h
+++ b/core/fxcrt/fx_extension.h
@@ -26,7 +26,6 @@
float FXSYS_wcstof(const wchar_t* pwsStr, size_t nLength, size_t* pUsedLen);
wchar_t* FXSYS_wcsncpy(wchar_t* dstStr, const wchar_t* srcStr, size_t count);
-int32_t FXSYS_wcsnicmp(const wchar_t* s1, const wchar_t* s2, size_t count);
inline bool FXSYS_iswlower(int32_t c) {
return u_islower(c);
diff --git a/core/fxcrt/fx_extension_unittest.cpp b/core/fxcrt/fx_extension_unittest.cpp
index 924d8ce..8a4b012 100644
--- a/core/fxcrt/fx_extension_unittest.cpp
+++ b/core/fxcrt/fx_extension_unittest.cpp
@@ -192,32 +192,6 @@
EXPECT_EQ(131u, used_len);
}
-TEST(fxcrt, FXSYS_wcsnicmp) {
- EXPECT_EQ(FXSYS_wcsnicmp(L"foo", L"foo", 1), 0);
- EXPECT_EQ(FXSYS_wcsnicmp(L"foo", L"foo", 2), 0);
- EXPECT_EQ(FXSYS_wcsnicmp(L"foo", L"foo", 3), 0);
-
- EXPECT_GT(FXSYS_wcsnicmp(L"foo", L"barr", 3), 0);
- EXPECT_LT(FXSYS_wcsnicmp(L"bar", L"fooo", 3), 0);
-
- EXPECT_EQ(FXSYS_wcsnicmp(L"FOO", L"foo", 3), 0);
- EXPECT_EQ(FXSYS_wcsnicmp(L"foO", L"Foo", 3), 0);
- EXPECT_EQ(FXSYS_wcsnicmp(L"food", L"FOOT", 3), 0);
- EXPECT_LT(FXSYS_wcsnicmp(L"food", L"FOOT", 4), 0);
-
- const wchar_t kMax16bitSigned[] = {
- static_cast<wchar_t>(std::numeric_limits<int16_t>::max()), 0};
- EXPECT_GT(FXSYS_wcsnicmp(kMax16bitSigned, L"f", 1), 0);
- const wchar_t kMax16bitUnsigned[] = {
- static_cast<wchar_t>(std::numeric_limits<uint16_t>::max()), 0};
- EXPECT_GT(FXSYS_wcsnicmp(kMax16bitUnsigned, L"f", 1), 0);
-
-#if defined(WCHAR_T_IS_32_BIT)
- const wchar_t kMaxUnicode[] = {static_cast<wchar_t>(0x10ffff), 0};
- EXPECT_GT(FXSYS_wcsnicmp(kMaxUnicode, L"f", 1), 0);
-#endif
-}
-
TEST(fxcrt, FXSYS_SafeOps) {
const float fMin = std::numeric_limits<float>::min();
const float fMax = std::numeric_limits<float>::max();
diff --git a/core/fxcrt/xml/cfx_xmlparser.cpp b/core/fxcrt/xml/cfx_xmlparser.cpp
index e94f78c..5d19777 100644
--- a/core/fxcrt/xml/cfx_xmlparser.cpp
+++ b/core/fxcrt/xml/cfx_xmlparser.cpp
@@ -345,12 +345,12 @@
current_buffer_idx++;
break;
case FDE_XmlSyntaxState::SkipCommentOrDecl: {
- auto current_span =
- pdfium::make_span(buffer).subspan(current_buffer_idx);
- if (FXSYS_wcsnicmp(current_span.data(), L"--", 2) == 0) {
+ auto current_view = WideStringView(
+ pdfium::make_span(buffer).subspan(current_buffer_idx));
+ if (current_view.First(2).EqualsASCII("--")) {
current_buffer_idx += 2;
current_parser_state = FDE_XmlSyntaxState::SkipComment;
- } else if (FXSYS_wcsnicmp(current_span.data(), L"[CDATA[", 7) == 0) {
+ } else if (current_view.First(7).EqualsASCIINoCase("[CDATA[")) {
current_buffer_idx += 7;
current_parser_state = FDE_XmlSyntaxState::SkipCData;
} else {
@@ -361,9 +361,9 @@
break;
}
case FDE_XmlSyntaxState::SkipCData: {
- auto current_span =
- pdfium::make_span(buffer).subspan(current_buffer_idx);
- if (FXSYS_wcsnicmp(current_span.data(), L"]]>", 3) == 0) {
+ auto current_view = WideStringView(
+ pdfium::make_span(buffer).subspan(current_buffer_idx));
+ if (current_view.First(3).EqualsASCII("]]>")) {
current_buffer_idx += 3;
current_parser_state = FDE_XmlSyntaxState::Text;
current_node_->AppendLastChild(
@@ -424,9 +424,9 @@
}
break;
case FDE_XmlSyntaxState::SkipComment: {
- auto current_span =
- pdfium::make_span(buffer).subspan(current_buffer_idx);
- if (FXSYS_wcsnicmp(current_span.data(), L"-->", 3) == 0) {
+ auto current_view = WideStringView(
+ pdfium::make_span(buffer).subspan(current_buffer_idx));
+ if (current_view.First(3).EqualsASCII("-->")) {
current_buffer_idx += 2;
current_parser_state = FDE_XmlSyntaxState::Text;
}