⬢ DragonFlyBSD Kernel Audit
DF-5690 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-5690",
  "title": "prop_array_util _nocopy helpers export borrowed-pointer lifetime hazards to _KERNEL: unpinned get_cstring_nocopy return, set_cstring_nocopy referencing caller-owned memory forever (frozen ps_size vs current NUL)",
  "verdict_summary": "reproduced",
  "impact": "none",
  "severity": "Info",
  "confidence": "certain",
  "reproduce": {
    "build": "sh /tmp/df5690/build.sh  (3 same-source libprop rigs from /usr/src/sys/libprop: plain, page-guard, page-guard+fix.diff)",
    "run": "sh /tmp/df5690/run.sh  (matrix | nolife baseline | nolife fixed)",
    "expected": "matrix: 811 checks, 0 failures, 6 known(DF-2240) rows; nolife baseline: T1 TRAP, T2 leaks reused buffer content via externalize, T2b TRAP, T3 TRAP, T4 control clean; nolife fixed: T2/T2b/T3 hazards gone (frozen copy), T1 still traps (documented contract)"
  },
  "kernel_refs": [
    "sys/libprop/prop_array_util.c:205-218",
    "sys/libprop/prop_array_util.c:220-235",
    "sys/libprop/prop_array.h:145-155",
    "sys/libprop/prop_string.c:85-87",
    "sys/libprop/prop_string.c:188-200",
    "sys/libprop/prop_string.c:101-105",
    "sys/libprop/prop_string.c:302-304",
    "sys/libprop/prop_array.c:650-657",
    "sys/libprop/prop_object.c:195-226",
    "sys/dev/disk/dm/dm_ioctl.c:273-316"
  ],
  "artifacts": [
    "README.md", "VERDICT.md", "df5690.c", "guardalloc.h", "fix.diff",
    "build.sh", "run.sh", "build.log", "run.log", "run.2.log", "env.txt",
    "manifest.json", "verdict.json"
  ]
}