// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include #include #include #include #include #include "base/substring_set_matcher/matcher_string_pattern.h" #include "base/substring_set_matcher/substring_set_matcher.h" namespace base { extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { FuzzedDataProvider provider(data, size); std::vector patterns; std::set pattern_set; for (;;) { std::string pattern = provider.ConsumeRandomLengthString(); if (pattern.empty() || pattern_set.count(pattern)) break; patterns.emplace_back(pattern, patterns.size()); pattern_set.insert(pattern); } SubstringSetMatcher matcher; if (matcher.Build(patterns)) { std::set matches; matcher.Match(provider.ConsumeRandomLengthString(), &matches); } return 0; } } // namespace base