summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2008-03-27 17:55:33 +0000
committerAndrey Nazarov <skuller@skuller.net>2008-03-27 17:55:33 +0000
commit2077e015e89f899ac54572a81e2a4ee6343cdba9 (patch)
tree8b3bc56a5674acc6342f5a70a424cad3954eb9ed
parentc12abcbe8b5fa0a527a3093d73c31492716b8d18 (diff)
Prevent endless loop when reading certain corrupted PNG images.
-rw-r--r--source/r_images.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/source/r_images.c b/source/r_images.c
index 9a9fb7a..22e3a8d 100644
--- a/source/r_images.c
+++ b/source/r_images.c
@@ -924,10 +924,11 @@ static void QDECL png_vfs_read_fn( png_structp png_ptr, png_bytep buf, png_size_
struct pngReadStruct *r = png_get_io_ptr( png_ptr );
if( r->data + size > r->maxp ) {
- size = r->maxp - r->data;
- }
- memcpy( buf, r->data, size );
- r->data += size;
+ png_error( png_ptr, "read error" );
+ } else {
+ memcpy( buf, r->data, size );
+ r->data += size;
+ }
}
static void QDECL png_console_error_fn( png_structp png_ptr, png_const_charp error_msg ) {