fuzzerMemory.c 842 B

1234567891011121314151617181920212223242526272829303132
  1. #include "RyanJsonFuzzer.h"
  2. // Fuzzer 全局状态
  3. RyanJsonFuzzerState g_fuzzerState = {0};
  4. /**
  5. * @brief Fuzzer 专用 malloc Hook
  6. *
  7. * 正常情况下直接透传系统分配;当故障注入开启时,按概率返回 NULL,
  8. * 用于命中库内部的 OOM 清理与回滚路径。
  9. */
  10. void *RyanJsonFuzzerMalloc(size_t size)
  11. {
  12. if (g_fuzzerState.isEnableMemFail && RyanJsonFuzzerShouldFail(598)) { return NULL; }
  13. return (char *)malloc(size);
  14. }
  15. void RyanJsonFuzzerFree(void *block)
  16. {
  17. free(block);
  18. }
  19. /**
  20. * @brief Fuzzer 专用 realloc Hook
  21. *
  22. * 与 malloc Hook 保持同样的注入语义,重点覆盖扩容失败后的资源释放逻辑。
  23. */
  24. void *RyanJsonFuzzerRealloc(void *block, size_t size)
  25. {
  26. if (g_fuzzerState.isEnableMemFail && RyanJsonFuzzerShouldFail(508)) { return NULL; }
  27. return (char *)realloc(block, size);
  28. }