blob: a18b162af1ea2bd8bb43a2e15ee441aa50e5c496 [file] [log] [blame]
// Copyright (c) 2018 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 "base/strings/string_number_conversions.h"
#include "base/strings/string_piece.h"
#include "net/base/io_buffer.h"
#include "net/dns/dns_protocol.h"
#include "net/dns/dns_query.h"
#include "net/dns/dns_response.h"
#include "starboard/memory.h"
#include "starboard/types.h"
// Entry point for LibFuzzer.
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
auto packet = base::MakeRefCounted<net::IOBufferWithSize>(size);
memcpy(packet->data(), data, size);
base::Optional<net::DnsQuery> query;
query.emplace(packet);
if (!query->Parse()) {
return 0;
}
net::DnsResponse response(query->id(), true /* is_authoritative */,
{} /* answers */, {} /* additional records */,
query);
std::string out =
base::HexEncode(response.io_buffer()->data(), response.io_buffer_size());
return 0;
}