DragonFlyBSD Kernel Audit
DF-1018 / run.log
← back to finding ↓ download raw
DF-1018: TRIM heap overflow arithmetic
  TRIM_MAX_RANGES: 512 (data array = 4096 bytes)
  secsize (device-controlled): 1
  b_bcount (DAIOCTRIM max):    0x7FFF8000
  count = b_bcount/secsize:    2147450880

  *** OVERFLOW STARTS HERE: ranges=512, off=4096 >= data_len=4096 ***
  Total ranges written:    32768 (into array of 512)
  Total bytes written:     262144
  Heap overflow:           258048 bytes past data[]
  OOB DMA dxfer_len:       262144 bytes (cam_fill_csio :1378)
  OOB DMA info leak:       258048 bytes of kernel heap sent to device

  BUG CONFIRMED: 32768 ranges written into data[512] = 258048 byte overflow.
  The first bio is processed unconditionally (merge check at :1365
  only bounds subsequent bios). secsize=1 makes count enormous.