From ef8fc4b53d92fbfcd8ef1abbd6f2f5fe2c4a11e5 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 17 Mar 2015 21:59:56 -0700 Subject: [PATCH] Fix bug #69253 - ZIP Integer Overflow leads to writing past heap boundary --- NEWS | 4 ++++ ext/zip/lib/zip_dirent.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ext/zip/lib/zip_dirent.c b/ext/zip/lib/zip_dirent.c index b9dac5c..0090801 100644 --- a/ext/zip/lib/zip_dirent.c +++ b/ext/zip/lib/zip_dirent.c @@ -110,7 +110,7 @@ if (nentry == 0) cd->entry = NULL; - else if ((cd->entry=(struct zip_entry *)malloc(sizeof(*(cd->entry))*(size_t)nentry)) == NULL) { + else if (nentry > ((size_t)-1)/sizeof(*(cd->entry)) || (cd->entry=(struct zip_entry *)malloc(sizeof(*(cd->entry))*(size_t)nentry)) == NULL) { _zip_error_set(error, ZIP_ER_MEMORY, 0); free(cd); return NULL;