From 2806adfdc27a94d333199345394d7c302952b95f Mon Sep 17 00:00:00 2001 From: trylab <trylab@users.noreply.github.com> Date: Tue, 6 Sep 2016 18:35:32 +0800 Subject: [PATCH] Fix integer overflow in gdImageWebpCtx Integer overflow can be happened in expression gdImageSX(im) * 4 * gdImageSY(im). It could lead to heap buffer overflow in the following code. This issue has been reported to the PHP Bug Tracking System. The proof-of-concept file will be supplied some days later. This issue was discovered by Ke Liu of Tencent's Xuanwu LAB. --- src/gd_webp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gd_webp.c b/src/gd_webp.c index 8eb4dee..9886399 100644 --- a/src/gd_webp.c +++ b/src/gd_webp.c @@ -199,6 +199,14 @@ BGD_DECLARE(void) gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quality) quality = 80; } + if (overflow2(gdImageSX(im), 4)) { + return; + } + + if (overflow2(gdImageSX(im) * 4, gdImageSY(im))) { + return; + } + argb = (uint8_t *)gdMalloc(gdImageSX(im) * 4 * gdImageSY(im)); if (!argb) { return;