From a0d2753fcbc72d6601bde8c7b5fbe5fd14a0ed63 Mon Sep 17 00:00:00 2001 From: James Zern Date: Thu, 22 Sep 2016 23:13:33 -0700 Subject: [PATCH] lower WEBP_MAX_ALLOCABLE_MEMORY default restrict to 2^34 for 64-bit targets, < 2^32 for 32-bit Change-Id: Iff4ce40ae2c3c7fc119f018c2128dbe8f744341f (cherry picked from commit b8384b53d63fd193917076a727a262fc005263f8) --- src/utils/utils.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/utils/utils.h b/src/utils/utils.h index e0a81126..3a5d4e6a 100644 --- a/src/utils/utils.h +++ b/src/utils/utils.h @@ -20,6 +20,7 @@ #endif #include +#include #include "../dsp/dsp.h" #include "../webp/types.h" @@ -32,7 +33,14 @@ extern "C" { // Memory allocation // This is the maximum memory amount that libwebp will ever try to allocate. -#define WEBP_MAX_ALLOCABLE_MEMORY (1ULL << 40) +#ifndef WEBP_MAX_ALLOCABLE_MEMORY +#if SIZE_MAX > (1ULL << 34) +#define WEBP_MAX_ALLOCABLE_MEMORY (1ULL << 34) +#else +// For 32-bit targets keep this below INT_MAX to avoid valgrind warnings. +#define WEBP_MAX_ALLOCABLE_MEMORY ((1ULL << 31) - (1 << 16)) +#endif +#endif // WEBP_MAX_ALLOCABLE_MEMORY // size-checking safe malloc/calloc: verify that the requested size is not too // large, or return NULL. You don't need to call these for constructs like