// 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);
  SbMemoryCopy(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;
}
