diff --git a/src/lib/openjp2/opj_malloc.c b/src/lib/openjp2/opj_malloc.c index dca91bfcb..aba8d277b 100644 --- a/src/lib/openjp2/opj_malloc.c +++ b/src/lib/openjp2/opj_malloc.c @@ -32,6 +32,8 @@ #define OPJ_SKIP_POISON #include "opj_includes.h" +#include + #if defined(OPJ_HAVE_MALLOC_H) && defined(OPJ_HAVE_MEMALIGN) # include #endif @@ -201,6 +203,11 @@ void * opj_calloc(size_t num, size_t size) /* prevent implementation defined behavior of realloc */ return NULL; } + if (num > SIZE_MAX / size) { + /* prevent overflow */ + errno = ENOMEM; + return NULL; + } return calloc(num, size); }