Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(556)

Unified Diff: third_party/libpng/pngtest.c

Issue 2939383002: libpng: Reject oversized iCCP profile length (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/libpng/pngpriv.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/libpng/pngtest.c
diff --git a/third_party/libpng/pngtest.c b/third_party/libpng/pngtest.c
index eb431f95c664cfda74afe784104153bff5552d24..3515265d494c5f74ed5f010c25834c7637149cf0 100644
--- a/third_party/libpng/pngtest.c
+++ b/third_party/libpng/pngtest.c
@@ -514,10 +514,10 @@ typedef struct memory_information
typedef memory_information *memory_infop;
static memory_infop pinformation = NULL;
-static int current_allocation = 0;
-static int maximum_allocation = 0;
-static int total_allocation = 0;
-static int num_allocations = 0;
+static png_alloc_size_t current_allocation = 0;
+static png_alloc_size_t maximum_allocation = 0;
+static png_alloc_size_t total_allocation = 0;
+static png_alloc_size_t num_allocations = 0;
png_voidp PNGCBAPI png_debug_malloc PNGARG((png_structp png_ptr,
png_alloc_size_t size));
@@ -604,9 +604,10 @@ png_debug_free(png_structp png_ptr, png_voidp ptr)
if (pinfo->pointer == ptr)
{
*ppinfo = pinfo->next;
- current_allocation -= pinfo->size;
- if (current_allocation < 0)
+ if (current_allocation < pinfo->size)
fprintf(STDERR, "Duplicate free of memory\n");
+ else
+ current_allocation -= pinfo->size;
/* We must free the list element too, but first kill
the memory that is to be freed. */
memset(ptr, 0x55, pinfo->size);
@@ -938,6 +939,12 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
read_user_chunk_callback);
#endif
+#ifdef PNG_SET_USER_LIMITS_SUPPORTED
+# ifdef CHUNK_LIMIT /* from the build, for testing */
+ png_set_chunk_malloc_max(read_ptr, CHUNK_LIMIT);
+# endif /* CHUNK_LIMIT */
+#endif
+
#ifdef PNG_SETJMP_SUPPORTED
pngtest_debug("Setting jmpbuf for read struct");
if (setjmp(png_jmpbuf(read_ptr)))
@@ -1874,7 +1881,7 @@ main(int argc, char *argv[])
{
int i;
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
- int allocation_now = current_allocation;
+ png_alloc_size_t allocation_now = current_allocation;
#endif
for (i=2; i<argc; ++i)
{
@@ -1907,15 +1914,15 @@ main(int argc, char *argv[])
}
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
if (allocation_now != current_allocation)
- fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n",
- current_allocation - allocation_now);
+ fprintf(STDERR, "MEMORY ERROR: %lu bytes lost\n",
+ (unsigned long)(current_allocation - allocation_now));
if (current_allocation != 0)
{
memory_infop pinfo = pinformation;
- fprintf(STDERR, "MEMORY ERROR: %d bytes still allocated\n",
- current_allocation);
+ fprintf(STDERR, "MEMORY ERROR: %lu bytes still allocated\n",
+ (unsigned long)current_allocation);
while (pinfo != NULL)
{
@@ -1928,14 +1935,14 @@ main(int argc, char *argv[])
#endif
}
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
- fprintf(STDERR, " Current memory allocation: %10d bytes\n",
- current_allocation);
- fprintf(STDERR, " Maximum memory allocation: %10d bytes\n",
- maximum_allocation);
- fprintf(STDERR, " Total memory allocation: %10d bytes\n",
- total_allocation);
- fprintf(STDERR, " Number of allocations: %10d\n",
- num_allocations);
+ fprintf(STDERR, " Current memory allocation: %20lu bytes\n",
+ (unsigned long)current_allocation);
+ fprintf(STDERR, " Maximum memory allocation: %20lu bytes\n",
+ (unsigned long) maximum_allocation);
+ fprintf(STDERR, " Total memory allocation: %20lu bytes\n",
+ (unsigned long)total_allocation);
+ fprintf(STDERR, " Number of allocations: %20lu\n",
+ (unsigned long)num_allocations);
#endif
}
@@ -1946,7 +1953,7 @@ main(int argc, char *argv[])
{
int kerror;
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
- int allocation_now = current_allocation;
+ png_alloc_size_t allocation_now = current_allocation;
#endif
if (i == 1)
status_dots_requested = 1;
@@ -1996,15 +2003,15 @@ main(int argc, char *argv[])
}
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
if (allocation_now != current_allocation)
- fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n",
- current_allocation - allocation_now);
+ fprintf(STDERR, "MEMORY ERROR: %lu bytes lost\n",
+ (unsigned long)(current_allocation - allocation_now));
if (current_allocation != 0)
{
memory_infop pinfo = pinformation;
- fprintf(STDERR, "MEMORY ERROR: %d bytes still allocated\n",
- current_allocation);
+ fprintf(STDERR, "MEMORY ERROR: %lu bytes still allocated\n",
+ (unsigned long)current_allocation);
while (pinfo != NULL)
{
@@ -2016,14 +2023,14 @@ main(int argc, char *argv[])
#endif
}
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
- fprintf(STDERR, " Current memory allocation: %10d bytes\n",
- current_allocation);
- fprintf(STDERR, " Maximum memory allocation: %10d bytes\n",
- maximum_allocation);
- fprintf(STDERR, " Total memory allocation: %10d bytes\n",
- total_allocation);
- fprintf(STDERR, " Number of allocations: %10d\n",
- num_allocations);
+ fprintf(STDERR, " Current memory allocation: %20lu bytes\n",
+ (unsigned long)current_allocation);
+ fprintf(STDERR, " Maximum memory allocation: %20lu bytes\n",
+ (unsigned long)maximum_allocation);
+ fprintf(STDERR, " Total memory allocation: %20lu bytes\n",
+ (unsigned long)total_allocation);
+ fprintf(STDERR, " Number of allocations: %20lu\n",
+ (unsigned long)num_allocations);
#endif
}
« no previous file with comments | « third_party/libpng/pngpriv.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698