⬢ DragonFlyBSD Kernel Audit
DF-5443 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-5443",
  "title": "pnp_read_bytes() error path abandons the grown buffer -> double free + leak in pnp_isolation_protocol()",
  "verdict": "reproduced",
  "impact": "panic",
  "confidence": "certain",
  "reproduce": {
    "build": "(cd /usr/src/sys/bus/isa/hack_dfa && make obj && make depend && make)",
    "run": "kldload /usr/obj/usr/src/sys/bus/isa/hack_dfa/rigdfa.ko",
    "expected": "baseline: kfree(1024-buffer) at growth, then kfree of the SAME address at isolation cleanup, then 'panic: memory chunk ... is already free!'; fixed kernel: cleanup kfree targets the grown buffer once, RC=0"
  },
  "kernel_refs": [
    "sys/bus/isa/pnp.c:493-526",
    "sys/bus/isa/pnp.c:517-518",
    "sys/bus/isa/pnp.c:576-580",
    "sys/bus/isa/pnp.c:673-674"
  ],
  "artifacts": [
    "README.md", "VERDICT.md", "verdict.json", "manifest.json",
    "rig/pnprig.c", "rig/rigmod.h", "rig/hack_dfa/wrap.c", "rig/hack_dfa/Makefile",
    "rig/hack_dfb/wrap.c", "rig/hack_dfb/Makefile", "rig/hack_dfc/wrap.c",
    "rig/hack_dfc/Makefile", "rig/hack_dfd/wrap.c", "rig/hack_dfd/Makefile",
    "rig/build.sh", "rig/run_A.sh", "rig/run_BCD.sh",
    "run.log", "serial_runA_full.log", "panic.txt", "env.txt",
    "fix.diff", "fix_run.log", "fix_build.log"
  ]
}