This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixed bug 4628 - SEGV_UNKNOW in function SDL_free_REAL at SDL_malloc.…
…c:5372-5 Hugo Lefeuvre The PCX format specifies pcxh.BytesPerLine, which represents the size of a single plane's scanline in bytes. Valid PCX images should have pcxh.BytesPerLine >= surface->pitch. pcxh.BytesPerLine and surface->pitch can legitimately be different because pcxh.BytesPerLine is padded to be a multiple of machine word length (where file was created). If src_bits == 8 we directly read a whole scanline from src to row. This is a problem in the case where bpl > surface->pitch because row is too small. This allows attacker to perform unlimited OOB write on the heap. + remove pointless check bpl > surface->pitch, this is a valid situation + make sure we always read into buf which is big enough + in the case where src_bits == 8: copy these bytes back to row afterwar
- Loading branch information
Showing 1 changed file with 16 additions and 10 deletions.