{
  "finding_id": "DF-3759",
  "file": "sys/dev/netif/alc/if_alc.c",
  "verdict": "inconclusive",
  "impact_class": "none",
  "reproduce": {
    "build": "cc -O2 -Wall -Wextra -o trigger trigger.c",
    "run": "vm.sh run_root 'cc -O2 -Wall -Wextra -o /root/trigger /root/trigger.c && /root/trigger'  (after scp of trigger.c)",
    "expected": "Source-level certain: alc_rxeof (sys/dev/netif/alc/if_alc.c:3307,3368,3372,3386) derives m->m_pkthdr.len / m->m_len from the 14-bit controller-DMA'd RRD_BYTES field with no bound against nsegs * alc_buf_size (1536) or ETHER_CRC_LEN, on MCLBYTES(2048) clusters. A faulty/malicious Atheros NIC can hand the stack an mbuf describing up to 16379 bytes in a 2048-byte cluster (heap OOB read / kernel heap info leak to unprivileged sockets) or negative lengths (mbuf invariant violation / panic). Runtime honestly inconclusive: guest has no Atheros PCI device (NO_ATHEROS_PCI, ifconfig=vtnet0 lo0, no hw.alc sysctl). trigger.c/run.log demonstrate the corrupted length arithmetic deterministically."
  },
  "kernel_refs": [
    "sys/dev/netif/alc/if_alc.c:3307",
    "sys/dev/netif/alc/if_alc.c:3368",
    "sys/dev/netif/alc/if_alc.c:3372",
    "sys/dev/netif/alc/if_alc.c:3375",
    "sys/dev/netif/alc/if_alc.c:3386",
    "sys/dev/netif/alc/if_alc.c:3400",
    "sys/dev/netif/alc/if_alc.c:3187",
    "sys/dev/netif/alc/if_alc.c:3653",
    "sys/dev/netif/alc/if_alcreg.h:1240",
    "sys/dev/netif/alc/if_alcreg.h:554"
  ],
  "artifacts": [
    "README.md",
    "VERDICT.md",
    "trigger.c",
    "build.sh",
    "run.sh",
    "run.log",
    "env.txt",
    "fix.diff",
    "manifest.json",
    "verdict.json"
  ]
}
