{ "schema_version": 1, "case_id": "source-asan-differential-pairs", "case_type": "differential", "origin": "synthetic", "backend": "source", "name": "source_asan_differential_pairs", "description": "Paired vulnerable/fixed memory-safety cases must receive the same classification from Fold source analysis and replayed ASan.", "expect": {}, "lineage": { "vulnerable_revision": "fixture:vulnerable", "fixed_revision": "fixture:fixed" }, "runtime_tool": "asan", "optimization": "-O0", "differential_oracle": { "agreement": "Fold and replayed ASan agree on vulnerable versus fixed classification", "comparators": ["fold-source", "asan"] }, "pairs": [ { "name": "stack-array-out-of-bounds", "hazard": "oob", "detector": "oob", "rule_id": "fold.oob-access", "vulnerable_source": "../../fixtures/dast/stack_oob_vulnerable.cpp", "fixed_source": "../../fixtures/dast/stack_oob_fixed.cpp", "sanitizer": "address", "runtime_regex": "AddressSanitizer: (?:stack|global)-buffer-overflow|(?:stack|global)-buffer-overflow" }, { "name": "heap-use-after-free", "hazard": "use-after-free", "detector": "use-after-free", "rule_id": "fold.use-after-free", "vulnerable_source": "../../fixtures/dast/uaf_vulnerable.cpp", "fixed_source": "../../fixtures/dast/uaf_fixed.cpp", "sanitizer": "address", "runtime_regex": "AddressSanitizer: heap-use-after-free|heap-use-after-free" } ] }