// Copyright 2019 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 #include #include #include "base/at_exit.h" #include "base/i18n/icu_util.h" #include "base/strings/utf_string_conversions.h" #include "components/query_parser/query_parser.h" struct Environment { Environment() { CHECK(base::i18n::InitializeICU()); } base::AtExitManager at_exit_manager; }; extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { static Environment env; constexpr size_t kMaxSize = 1 << 16; if (size > kMaxSize) return 0; FuzzedDataProvider data_provider(data, size); const query_parser::MatchingAlgorithm matching_alg = data_provider.ConsumeEnum(); const std::u16string query16 = base::UTF8ToUTF16( data_provider.ConsumeBytesAsString(data_provider.remaining_bytes())); std::vector words; query_parser::QueryParser::ParseQueryWords(query16, matching_alg, &words); return 0; }