DF-2301
Off-by-one OOB read in print_db iterates one past the DMA descriptor array
Summary
print_db loops with for(i=0;i<=max;i++) where max=dbch->ndesc iterating ndesc+1 times over db array that has only ndesc entries. Uses <= instead of <. When key==OHCI_KEY_ST2 accesses db[i+1] (line 2379) then i++ (line 2400) compounding OOB. Reads past DMA descriptor allocation potentially causing kernel panic if access hits unmapped memory or leaking adjacent DMA memory contents to kernel console. Reached via DUMPDMA ioctl (operator group) or when firewire_debug is set.
No comments yet.