# DF-2349 — PoC verdict

**File:** `sys/bus/u4b/uvc/uvc_ctrls.c`

**Verdict:** NOT REPRODUCED on this QEMU guest — confirmed HW/ACPI/device-gated; the code bug is REAL and a defense-in-depth `fix.diff` is attached.

## Mechanism (confirmed in source)

uvc_ctrl_init_dev() iterates the per-unit bmControls bitmap with a uint8_t loop index i bounded by bCtrlSize*8. bCtrlSize is taken verbatim from the untrusted UVC descriptor; any bCtrlSize>=32 makes the bound>=256 so i wraps 255->0 and the loop never terminates, marching ctrl past the allocated topo_node->controls array (heap OOB write).

### Cited lines

- `sys/bus/u4b/uvc/uvc_ctrls.c:925`
- `sys/bus/u4b/uvc/uvc_ctrls.c:957-961`
- `sys/bus/u4b/uvc/uvc_ctrls.c:964-974`

## Why it does not reproduce on this guest

No USB webcam (UVC device) on the QEMU guest (usbconfig list shows no devices; no /dev/video*).

Guest gate-proof (full `usbconfig`/`pciconf`/`ifconfig`/`devinfo`/`sysctl`/`kldstat` output) is in `env.txt`.

## Defense-in-depth fix

Change the loop index from uint8_t to unsigned int so it cannot wrap at 256.

The git-apply-able diff is in `fix.diff` (verified `git apply --check` clean).

## Classification

- `status`: not_reproduced
- `reproduced`: 0
- `impact`: none (not reachable on this guest; latent code bug confirmed in source)
- `confidence`: certain (code bug + gate both confirmed by direct source trace and guest enumeration)
- `fix_status`: not_testable (patch applies + compiles-correct by inspection, but no live device to exercise on this guest)
