// Copyright 2019 The Chromium OS 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 <string>
#include <vector>

#include <stddef.h>
#include <stdint.h>

#include <base/files/file_path.h>
#include <base/files/file_util.h>
#include <base/files/scoped_temp_dir.h>
#include <base/logging.h>

#include "vm_tools/garcon/mime_types_parser.h"

class Environment {
 public:
  Environment() {
    // Disable logging.
    logging::SetMinLogLevel(logging::LOG_FATAL);
    // Setup temp dir for writing out the mime types file to parse.
    CHECK(temp_dir_.CreateUniqueTempDir());
  }

  base::ScopedTempDir temp_dir_;
};

extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
  static Environment env;

  // The filename has no impact on this function's execution.
  base::FilePath file_path(env.temp_dir_.GetPath().Append("mime_types"));
  base::WriteFile(file_path, reinterpret_cast<const char*>(data), size);

  vm_tools::garcon::MimeTypeMap map;
  vm_tools::garcon::ParseMimeTypes(file_path.value(), &map);

  return 0;
}
