// hj_transform fuzz 目标(ADR-025:libFuzzer 必测)。 // 构建:cmake -DHJ_BUILD_FUZZER=ON(需要 clang 的 -fsanitize=fuzzer)。 #include #include #include "hunjing/lingtai.h" extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { HjEngine *engine = nullptr; if (hj_engine_new(HJ_ABI_VERSION, &engine) != HJ_OK) { return 0; } HjBuffer *buf = nullptr; const HjStatus st = hj_transform_markdown(engine, reinterpret_cast(data), size, &buf); if (st == HJ_OK) { // 输出必须可读且与声称长度一致 const void *p = hj_buffer_data(buf); const size_t len = hj_buffer_len(buf); if (p == nullptr || len == 0) { hj_buffer_free(buf); hj_engine_free(engine); __builtin_trap(); } hj_buffer_free(buf); } hj_engine_free(engine); return 0; }