xref: /aosp_15_r20/external/flatbuffers/tests/fuzzer/flexbuffers_verifier_fuzzer.cc (revision 890232f25432b36107d06881e0a25aaa6b473652)
1*890232f2SAndroid Build Coastguard Worker // Copyright 2015 The Chromium Authors. All rights reserved.
2*890232f2SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*890232f2SAndroid Build Coastguard Worker // found in the LICENSE file.
4*890232f2SAndroid Build Coastguard Worker #include <stddef.h>
5*890232f2SAndroid Build Coastguard Worker #include <stdint.h>
6*890232f2SAndroid Build Coastguard Worker #include <string>
7*890232f2SAndroid Build Coastguard Worker 
8*890232f2SAndroid Build Coastguard Worker #include "flatbuffers/flexbuffers.h"
9*890232f2SAndroid Build Coastguard Worker 
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)10*890232f2SAndroid Build Coastguard Worker extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
11*890232f2SAndroid Build Coastguard Worker   std::vector<uint8_t> reuse_tracker;
12*890232f2SAndroid Build Coastguard Worker   // Check both with and without reuse tracker paths.
13*890232f2SAndroid Build Coastguard Worker   flexbuffers::VerifyBuffer(data, size, &reuse_tracker);
14*890232f2SAndroid Build Coastguard Worker   // FIXME: we can't really verify this path, because the fuzzer will
15*890232f2SAndroid Build Coastguard Worker   // construct buffers that time out.
16*890232f2SAndroid Build Coastguard Worker   // Add a simple #define to bound the number of steps just for the fuzzer?
17*890232f2SAndroid Build Coastguard Worker   //flexbuffers::VerifyBuffer(data, size, nullptr);
18*890232f2SAndroid Build Coastguard Worker   return 0;
19*890232f2SAndroid Build Coastguard Worker }
20