X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/07e99d87821e921950015cf5fbf9ab12b0e45665..026c6eff708c867efe9eca35e41bf82b58ba1c1a:/src/common/imagtga.cpp diff --git a/src/common/imagtga.cpp b/src/common/imagtga.cpp index 8f9737ca4e..e7203f3065 100644 --- a/src/common/imagtga.cpp +++ b/src/common/imagtga.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: imagtga.cpp +// Name: src/common/imagtga.cpp // Purpose: wxImage TGA handler // Author: Seth Jackson // CVS-ID: $Id$ @@ -131,6 +131,11 @@ int DecodeRLE(unsigned char* imageData, unsigned long imageSize, index += current * pixelSize; + if (index >= imageSize) + { + return wxTGA_IOERR; + } + // Repeat the pixel length times. if ( !stream.Read(buf, pixelSize) ) return wxTGA_IOERR; @@ -151,6 +156,11 @@ int DecodeRLE(unsigned char* imageData, unsigned long imageSize, index += length; + if (index >= imageSize) + { + return wxTGA_IOERR; + } + // Write the next length pixels directly to the image data. if ( !stream.Read(imageData, length) ) return wxTGA_IOERR; @@ -217,7 +227,7 @@ int ReadTGA(wxImage* image, wxInputStream& stream) image->Create(width, height); - if (!image->Ok()) + if (!image->IsOk()) { return wxTGA_MEMERR; } @@ -836,7 +846,7 @@ bool wxTGAHandler::DoCanRead(wxInputStream& stream) unsigned char hdr[HDR_SIZE]; stream.Read(hdr, HDR_SIZE); // it's ok to modify the stream position here - // Check wether we can read the file or not. + // Check whether we can read the file or not. short colorType = hdr[HDR_COLORTYPE]; if ( colorType != wxTGA_UNMAPPED && colorType != wxTGA_MAPPED )