OLD | NEW |
1 | 1 |
2 /* pngpread.c - read a png file in push mode | 2 /* pngpread.c - read a png file in push mode |
3 * | 3 * |
4 * Last changed in libpng 1.6.18 [July 23, 2015] | 4 * Last changed in libpng 1.6.18 [July 23, 2015] |
5 * Copyright (c) 1998-2002,2004,2006-2015 Glenn Randers-Pehrson | 5 * Copyright (c) 1998-2002,2004,2006-2015 Glenn Randers-Pehrson |
6 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) | 6 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) |
7 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) | 7 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) |
8 * | 8 * |
9 * This code is released under the libpng license. | 9 * This code is released under the libpng license. |
10 * For conditions of distribution and use, see the disclaimer | 10 * For conditions of distribution and use, see the disclaimer |
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 old_buffer = png_ptr->save_buffer; | 492 old_buffer = png_ptr->save_buffer; |
493 png_ptr->save_buffer = (png_bytep)png_malloc_warn(png_ptr, | 493 png_ptr->save_buffer = (png_bytep)png_malloc_warn(png_ptr, |
494 (png_size_t)new_max); | 494 (png_size_t)new_max); |
495 | 495 |
496 if (png_ptr->save_buffer == NULL) | 496 if (png_ptr->save_buffer == NULL) |
497 { | 497 { |
498 png_free(png_ptr, old_buffer); | 498 png_free(png_ptr, old_buffer); |
499 png_error(png_ptr, "Insufficient memory for save_buffer"); | 499 png_error(png_ptr, "Insufficient memory for save_buffer"); |
500 } | 500 } |
501 | 501 |
| 502 #if 0 |
| 503 // This is the code checked into libpng. Calling memcpy with a null |
| 504 // source is undefined, even if count is 0, but libpng does not |
| 505 // currently check for null or 0. The Skia fix is below. |
| 506 // skbug.com/5390 |
502 memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size); | 507 memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size); |
| 508 #else |
| 509 if (old_buffer) |
| 510 memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size); |
| 511 else if (png_ptr->save_buffer_size) |
| 512 png_error(png_ptr, "save_buffer error"); |
| 513 #endif |
503 png_free(png_ptr, old_buffer); | 514 png_free(png_ptr, old_buffer); |
504 png_ptr->save_buffer_max = new_max; | 515 png_ptr->save_buffer_max = new_max; |
505 } | 516 } |
506 if (png_ptr->current_buffer_size) | 517 if (png_ptr->current_buffer_size) |
507 { | 518 { |
508 memcpy(png_ptr->save_buffer + png_ptr->save_buffer_size, | 519 memcpy(png_ptr->save_buffer + png_ptr->save_buffer_size, |
509 png_ptr->current_buffer_ptr, png_ptr->current_buffer_size); | 520 png_ptr->current_buffer_ptr, png_ptr->current_buffer_size); |
510 png_ptr->save_buffer_size += png_ptr->current_buffer_size; | 521 png_ptr->save_buffer_size += png_ptr->current_buffer_size; |
511 png_ptr->current_buffer_size = 0; | 522 png_ptr->current_buffer_size = 0; |
512 } | 523 } |
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1076 | 1087 |
1077 png_voidp PNGAPI | 1088 png_voidp PNGAPI |
1078 png_get_progressive_ptr(png_const_structrp png_ptr) | 1089 png_get_progressive_ptr(png_const_structrp png_ptr) |
1079 { | 1090 { |
1080 if (png_ptr == NULL) | 1091 if (png_ptr == NULL) |
1081 return (NULL); | 1092 return (NULL); |
1082 | 1093 |
1083 return png_ptr->io_ptr; | 1094 return png_ptr->io_ptr; |
1084 } | 1095 } |
1085 #endif /* PROGRESSIVE_READ */ | 1096 #endif /* PROGRESSIVE_READ */ |
OLD | NEW |