/*
 * Copyright 2019 Google, LLC
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "src/core/SkDescriptor.h"
#include "src/core/SkReadBuffer.h"

void FuzzSkDescriptorDeserialize(sk_sp<SkData> bytes) {
    SkReadBuffer buffer{bytes->data(), bytes->size()};
    auto sut = SkAutoDescriptor::MakeFromBuffer(buffer);
    if (!sut.has_value()) {
        return;
    }

    auto desc = sut->getDesc();

    desc->computeChecksum();
    desc->isValid();

    // An arbitrary number
    uint32_t tagToFind = 117;

    uint32_t ignore;
    desc->findEntry(tagToFind, &ignore);
}

#if defined(SK_BUILD_FOR_LIBFUZZER)
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
    if (size > 1024) {
        return 0;
    }
    auto bytes = SkData::MakeWithoutCopy(data, size);
    FuzzSkDescriptorDeserialize(bytes);
    return 0;
}
#endif
