Commit 9c2d3ec8 authored by Kevin Bailey's avatar Kevin Bailey Committed by Commit Bot

[omnibox] Minor fuzzer for AutocompleteInput

Adds a small fuzzer for AutocompleteInput, an input classifier
and state structure.

Change-Id: Ib73721b44a9ef6ca15e978fcea210e56fd40be30
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1862346
Commit-Queue: Kevin Bailey <krb@chromium.org>
Reviewed-by: default avatarLei Zhang <thestig@chromium.org>
Reviewed-by: default avatarJustin Donnelly <jdonnelly@chromium.org>
Reviewed-by: default avatarMax Moroz <mmoroz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#706619}
parent 514c08d9
...@@ -7,6 +7,7 @@ import("//build/config/jumbo.gni") ...@@ -7,6 +7,7 @@ import("//build/config/jumbo.gni")
import("//build/config/ui.gni") import("//build/config/ui.gni")
import("//components/vector_icons/vector_icons.gni") import("//components/vector_icons/vector_icons.gni")
import("//device/vr/buildflags/buildflags.gni") import("//device/vr/buildflags/buildflags.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/protobuf/proto_library.gni") import("//third_party/protobuf/proto_library.gni")
if (is_android) { if (is_android) {
...@@ -453,3 +454,16 @@ source_set("unit_tests") { ...@@ -453,3 +454,16 @@ source_set("unit_tests") {
"//url", "//url",
] ]
} }
fuzzer_test("autocomplete_input_fuzzer") {
sources = [
"autocomplete_input_fuzzer.cc",
]
deps = [
":browser",
":test_support",
"//base",
"//base:i18n",
"//third_party/metrics_proto:metrics_proto",
]
}
// 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 "components/omnibox/browser/autocomplete_input.h"
#include <stddef.h>
#include <stdint.h>
#include "base/at_exit.h"
#include "base/i18n/icu_util.h"
#include "base/strings/string16.h"
#include "components/omnibox/browser/test_scheme_classifier.h"
#include "third_party/metrics_proto/omnibox_event.pb.h"
// From crbug.com/774858
struct IcuEnvironment {
IcuEnvironment() { CHECK(base::i18n::InitializeICU()); }
// Used by ICU integration.
base::AtExitManager at_exit_manager;
};
IcuEnvironment icu_env;
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
// This fuzzer creates a random UTF16 string, for testing primarily against
// AutocompleteInput::Parse().
base::string16 s(reinterpret_cast<const base::string16::value_type*>(data),
size / sizeof(base::string16::value_type));
AutocompleteInput input(s, metrics::OmniboxEventProto::OTHER,
TestSchemeClassifier());
return 0;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment