Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix memory corruption in S_TransferPaintBuffer
When using a non-default sound configuration (such as 6 channels), after a long time (about 4.5hours for 6 channels at 22050 Hz) an overflow will occur in `S_TransferPaintBuffer`, causing an out of bounds write into the dma buffer. The problematic line is: ``` out_idx = (s_paintedtime * dma.channels) % dma.samples; ``` With `s_paintedtime` large enough, the result of the multiplication will overflow to a negative number (since `s_paintedtime` is signed), and the index into the output buffer will be negative.
- Loading branch information