Commit 712cbd1b authored by Daniel McArdle's avatar Daniel McArdle Committed by Commit Bot

Satisfy preconditions in update_client_protocol_serializer_fuzzer

Now we only use valid UTF8 strings. Also, the session_id string must
begin with "{", end with "}", and be nonempty, according to DCHECKs in
MakeProtocolRequest.

Bug: 1014625
Change-Id: If30c9b21f63c7cab7a01f456ec0593971ef1bc37
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1863669Reviewed-by: default avatarSorin Jianu <sorin@chromium.org>
Commit-Queue: Dan McArdle <dmcardle@chromium.org>
Cr-Commit-Position: refs/heads/master@{#706109}
parent 83b71438
......@@ -9,6 +9,7 @@
#include "base/command_line.h"
#include "base/json/json_reader.h"
#include "base/strings/string_util.h"
#include "components/update_client/protocol_handler.h"
#include "components/update_client/protocol_serializer.h"
......@@ -28,17 +29,18 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
// Share |data| between |MakeProtocolRequest| args
FuzzedDataProvider data_provider(data, size);
const size_t max_arg_size = size / 7;
auto GetUtf8String = [&data_provider, max_arg_size]() -> std::string {
std::string s = data_provider.ConsumeRandomLengthString(max_arg_size);
return base::IsStringUTF8(s) ? s : "";
};
protocol_request::Request request = MakeProtocolRequest(
data_provider.ConsumeRandomLengthString(max_arg_size) /* session_id */,
data_provider.ConsumeRandomLengthString(max_arg_size) /* prod_id */,
data_provider.ConsumeRandomLengthString(
max_arg_size) /* browser_version */,
data_provider.ConsumeRandomLengthString(max_arg_size) /* lang */,
data_provider.ConsumeRandomLengthString(max_arg_size) /* channel */,
data_provider.ConsumeRandomLengthString(max_arg_size) /* os_long_name */,
data_provider.ConsumeRandomLengthString(
max_arg_size) /* download_preference */,
additional_attributes, &updater_state_attributes, std::move(apps));
"{" + GetUtf8String() + "}" /* session_id */,
GetUtf8String() /* prod_id */, GetUtf8String() /* browser_version */,
GetUtf8String() /* lang */, GetUtf8String() /* channel */,
GetUtf8String() /* os_long_name */,
GetUtf8String() /* download_preference */, additional_attributes,
&updater_state_attributes, std::move(apps));
update_client::ProtocolHandlerFactoryJSON factory;
std::unique_ptr<ProtocolSerializer> serializer = factory.CreateSerializer();
......
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