Index: third_party/libwebp/utils/utils.c |
diff --git a/third_party/libwebp/utils/utils.c b/third_party/libwebp/utils/utils.c |
index 2602ca3c9f6e4fee63010b8beea6c5499e5869c6..82dbf8d5e5151ebbcca096a1c7f5919cc144f15e 100644 |
--- a/third_party/libwebp/utils/utils.c |
+++ b/third_party/libwebp/utils/utils.c |
@@ -175,8 +175,12 @@ static int CheckSizeArgumentsOverflow(uint64_t nmemb, size_t size) { |
} |
#endif |
#if defined(MALLOC_LIMIT) |
- if (mem_limit > 0 && total_mem + total_size >= mem_limit) { |
- return 0; // fake fail! |
+ if (mem_limit > 0) { |
+ const uint64_t new_total_mem = (uint64_t)total_mem + total_size; |
+ if (new_total_mem != (size_t)new_total_mem || |
+ new_total_mem > mem_limit) { |
+ return 0; // fake fail! |
+ } |
} |
#endif |