#include #include #include #include #include using executorch::extension::BufferDataLoader; using executorch::runtime::Program; static bool g_initialized = false; extern "C" int LLVMFuzzerTestOneInput(const std::uint8_t* data, std::size_t size) { if (!g_initialized) { executorch::runtime::runtime_init(); g_initialized = true; } if (data == nullptr || size == 0 || size > 32U*1024U*1024U) return 0; BufferDataLoader loader(data, size); auto program = Program::load(&loader, Program::Verification::InternalConsistency); if (program.ok()) { auto& p = program.get(); auto n = p.num_methods(); for (size_t i = 0; i < n; ++i) { auto name = p.get_method_name(i); if (name.ok()) { auto meta = p.method_meta(name.get()); if (meta.ok()) { auto& m = meta.get(); size_t nb = m.num_backends(); for (size_t bi = 0; bi < nb; ++bi) { (void)m.get_backend_name(bi); // ONLY this call - no uses_backend() } } } } } return 0; }