// Copyright 2016 The PDFium 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 <memory>

#include "core/fxcrt/cfx_memorystream.h"
#include "core/fxcrt/cfx_retain_ptr.h"
#include "core/fxcrt/cfx_seekablestreamproxy.h"
#include "core/fxcrt/xml/cfx_saxreader.h"

extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
  CFX_SAXReader reader;
  if (reader.StartParse(pdfium::MakeRetain<CFX_MemoryStream>(
                            const_cast<uint8_t*>(data), size, false),
                        0, -1, CFX_SaxParseMode_NotSkipSpace) < 0) {
    return 0;
  }

  while (1) {
    int32_t ret = reader.ContinueParse();
    if (ret < 0 || ret > 99)
      break;
  }

  return 0;
}
