{
  "finding_id": "DF-3435",
  "title": "ipfw3 check_keep_state() dereferences unchecked kmalloc(M_NULLOK) result - NULL-page write panic when the M_IPFW3_STATE type limit is reached",
  "verdict": "not_reproduced",
  "impact": "none",
  "reproduce": {
    "build": "cc -O2 -o /tmp/state_null_tap /tmp/state_null_tap.c",
    "run": "root: raise net.inet.ip.fw3_basic.state_max_udp_{in,out}=10000000, udp_timeout=7200, keep the keep-state rule; run /tmp/state_null_tap 30000000",
    "expected": "Fatal trap 12 page fault on WRITE to vaddr 0x18 in check_keep_state once ~390MB (kmem_lim_size()/10) of live states accumulate; NOT reached this session (state-creation throttled to ~2-7k pps by the netisr drain; ~30-50 min of sustained saturation required)"
  },
  "kernel_refs": [
    "sys/net/ipfw3_basic/ip_fw3_state.c:317",
    "sys/net/ipfw3_basic/ip_fw3_state.c:319",
    "sys/net/ipfw3_basic/ip_fw3_state.c:321",
    "sys/kern/kern_slaballoc.c:694",
    "sys/kern/kern_slaballoc.c:704",
    "sys/kern/kern_slaballoc.c:365"
  ],
  "artifacts": [
    "state_null.c", "state_null_tap.c", "README.md", "VERDICT.md",
    "fix.diff", "manifest.json", "verdict.json"
  ]
}
