{
  "finding_id": "DF-0924",
  "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 6.5-DEVELOPMENT #0: Thu Jul  2 06:02:54 UTC 2026     root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC  x86_64",
  "code_hash": "b9a306d0f9e7f73e4c245b4cc038294a3be6c13dd327ab55b89b5a9764a94a47",
  "tested_at": "2026-07-22T18:10:00Z",
  "verdict": "REPRODUCED",
  "impact": "dos",
  "confidence": "certain",
  "reproduce": {
    "build": "./build.sh",
    "run": "./run.sh            # timing demo (safe);  ./run.sh starve  # panics unpatched kernel",
    "expected": "guest hang/wedge (DoS); see run.log. On a fixed kernel: returns promptly."
  },
  "kernel_refs": [
    "sys/vfs/procfs/procfs_map.c:61",
    "sys/vfs/procfs/procfs_map.c:75",
    "sys/vfs/procfs/procfs_map.c:77",
    "sys/vfs/procfs/procfs_map.c:245",
    "sys/kern/subr_sbuf.c:178",
    "sys/kern/subr_sbuf.c:197",
    "sys/kern/kern_kmalloc.c:706"
  ],
  "artifacts": [
    {
      "path": "alloc_dos.c",
      "type": "trigger-source",
      "desc": "rewritten PoC: --time (timing proof) and --starve N S (concurrent-allocation panic) modes"
    },
    {
      "path": "README.md",
      "type": "readme",
      "desc": "original PoC README (build/run/expected)"
    },
    {
      "path": "build.sh",
      "type": "build-script",
      "desc": "cc -O2 -o alloc_dos alloc_dos.c"
    },
    {
      "path": "run.sh",
      "type": "run-script",
      "desc": "./alloc_dos --time (default) or ./alloc_dos --starve 4 8 (with 'starve' arg)"
    },
    {
      "path": "build.log",
      "type": "build-log",
      "desc": "final successful build, full output"
    },
    {
      "path": "run.log",
      "type": "run-log",
      "desc": "decisive baseline timing run (2.5s huge resid)"
    },
    {
      "path": "run.baseline.log",
      "type": "run-log",
      "desc": "baseline --time on unpatched #0 (2.75s huge resid)"
    },
    {
      "path": "run.patched.log",
      "type": "run-log",
      "desc": "patched #1 --time (1.45ms huge resid)"
    },
    {
      "path": "run.patched.2.log",
      "type": "run-log",
      "desc": "patched #1 --time repeat (4.86ms)"
    },
    {
      "path": "run.patched.3.log",
      "type": "run-log",
      "desc": "patched #1 --time repeat (3.25ms)"
    },
    {
      "path": "run.patched.starve.log",
      "type": "run-log",
      "desc": "patched #1 --starve 4 8 (no panic, freemem flat)"
    },
    {
      "path": "starve.log",
      "type": "run-log",
      "desc": "baseline --starve attempt (ssh died as guest panicked)"
    },
    {
      "path": "panic.txt",
      "type": "panic-signature",
      "desc": "panic: sbuf: malloc limit exceeded; stack procfs_domap->sbuf_new->kmalloc"
    },
    {
      "path": "boot_panic.log",
      "type": "boot-log",
      "desc": "full serial boot.log captured at panic"
    },
    {
      "path": "env.txt",
      "type": "environment",
      "desc": "uname, kern.version, cc version, procfs mount, patched-kernel sha256"
    },
    {
      "path": "fix.diff",
      "type": "suggested-fix",
      "desc": "git-apply-able: cap buflen at 1MiB (PROCFS_MAP_MAXBUF) before sbuf_new"
    },
    {
      "path": "fix_build.log",
      "type": "build-log",
      "desc": "first single-fix kernel build (rc=0)"
    },
    {
      "path": "VERDICT.md",
      "type": "verdict",
      "desc": "full narrative: mechanism, before/after evidence, fix validation"
    },
    {
      "path": "manifest.json",
      "type": "manifest",
      "desc": "this file"
    },
    {
      "path": "fix_apply.log",
      "type": "apply-log",
      "desc": "patch --dry-run output proving fix.diff applies cleanly on with-src"
    },
    {
      "path": "../fix_build_combined.log",
      "type": "build-log",
      "desc": "Combined 41-finding kernel build (rc=0, -Werror clean)"
    },
    {
      "path": "../fix_build_summary.txt",
      "type": "build-summary",
      "desc": "Summary of the combined 41-finding kernel build"
    }
  ]
}