Index: testing/libfuzzer/fuzzers/unicode_string_codepage_create_fuzzer.cc |
diff --git a/testing/libfuzzer/fuzzers/unicode_string_codepage_create_fuzzer.cc b/testing/libfuzzer/fuzzers/unicode_string_codepage_create_fuzzer.cc |
deleted file mode 100644 |
index 9a0e49a71cdc2e3423b0a6f80d3ddde052edfc8d..0000000000000000000000000000000000000000 |
--- a/testing/libfuzzer/fuzzers/unicode_string_codepage_create_fuzzer.cc |
+++ /dev/null |
@@ -1,102 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <stddef.h> |
-#include <stdint.h> |
- |
-#include <algorithm> |
-#include <array> |
-#include <vector> |
- |
-#include "third_party/icu/source/common/unicode/unistr.h" |
- |
-// Taken from third_party/icu/source/data/mappings/convrtrs.txt file. |
-static const std::array<const char*, 45> kConverters = { |
- { |
- "UTF-8", |
- "utf-16be", |
- "utf-16le", |
- "UTF-32", |
- "UTF-32BE", |
- "UTF-32LE", |
- "ibm866-html", |
- "iso-8859-2-html", |
- "iso-8859-3-html", |
- "iso-8859-4-html", |
- "iso-8859-5-html", |
- "iso-8859-6-html", |
- "iso-8859-7-html", |
- "iso-8859-8-html", |
- "ISO-8859-8-I", |
- "iso-8859-10-html", |
- "iso-8859-13-html", |
- "iso-8859-14-html", |
- "iso-8859-15-html", |
- "iso-8859-16-html", |
- "koi8-r-html", |
- "koi8-u-html", |
- "macintosh-html", |
- "windows-874-html", |
- "windows-1250-html", |
- "windows-1251-html", |
- "windows-1252-html", |
- "windows-1253-html", |
- "windows-1254-html", |
- "windows-1255-html", |
- "windows-1256-html", |
- "windows-1257-html", |
- "windows-1258-html", |
- "x-mac-cyrillic-html", |
- "windows-936-2000", |
- "gb18030", |
- "big5-html", |
- "euc-jp-html", |
- "ISO_2022,locale=ja,version=0", |
- "shift_jis-html", |
- "euc-kr-html", |
- "ISO-2022-KR", |
- "ISO-2022-CN", |
- "ISO-2022-CN-EXT", |
- "HZ-GB-2312" |
- } |
-}; |
- |
-// Entry point for LibFuzzer. |
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { |
- if (size < 2) |
- return 0; |
- |
- // Need null-terminated string. |
- std::vector<char> buffer(size, 0); |
- // First byte will be used for random decisions. |
- unsigned char selector = data[0]; |
- size -= 1; |
- std::copy(data + 1, data + size, buffer.data()); |
- |
- // Pointer to a part of fuzzer's data or to some valid codepage value. |
- char* codepage; |
- |
- if (selector & 1) { |
- // Use random codepage value provided by fuzzer (split data in two parts). |
- // Remove least significant bit because we already used it as input value. |
- size_t codepage_length = (selector >> 1) & 0xF; |
- if (size <= codepage_length) |
- size /= 2; |
- else |
- size -= codepage_length; |
- |
- codepage = buffer.data() + size; |
- } else { |
- // Use one of valid codepage values. |
- // Remove least significant bit because we already used it as input value. |
- size_t index = (selector >> 1) % kConverters.size(); |
- codepage = const_cast<char*>(kConverters[index]); |
- } |
- |
- icu::UnicodeString unicode_string(buffer.data(), |
- static_cast<int>(size), |
- codepage); |
- |
- return 0; |
-} |