42 lines
1.3 KiB
Diff
42 lines
1.3 KiB
Diff
|
From e13a342c079aeb73e31dfa19eaca119761bac3f3 Mon Sep 17 00:00:00 2001
|
||
|
From: Jonas Meurer <jonas@freesources.org>
|
||
|
Date: Tue, 11 Jun 2019 12:16:46 +0200
|
||
|
Subject: [PATCH] Fix #501: Uninitialized read in gdImageCreateFromXbm
|
||
|
(CVE-2019-11038)
|
||
|
|
||
|
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2019-11038
|
||
|
Bug-Debian: https://bugs.debian.org/929821
|
||
|
Bug: https://github.com/libgd/libgd/issues/501
|
||
|
|
||
|
We have to ensure that `sscanf()` does indeed read a hex value here,
|
||
|
and bail out otherwise.
|
||
|
|
||
|
Original patch by Christoph M. Becker <cmbecker69@gmx.de> for PHP libgd ext.
|
||
|
https://git.php.net/?p=php-src.git;a=commit;h=ed6dee9a198c904ad5e03113e58a2d2c200f5184
|
||
|
|
||
|
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||
|
---
|
||
|
src/gd_xbm.c | 6 +++++-
|
||
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/src/gd_xbm.c b/src/gd_xbm.c
|
||
|
index 4ca41ac..cf0545e 100644
|
||
|
--- a/src/gd_xbm.c
|
||
|
+++ b/src/gd_xbm.c
|
||
|
@@ -169,7 +169,11 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm(FILE * fd)
|
||
|
}
|
||
|
h[3] = ch;
|
||
|
}
|
||
|
- sscanf(h, "%x", &b);
|
||
|
+ if (sscanf(h, "%x", &b) != 1) {
|
||
|
+ gd_error("invalid XBM");
|
||
|
+ gdImageDestroy(im);
|
||
|
+ return 0;
|
||
|
+ }
|
||
|
for (bit = 1; bit <= max_bit; bit = bit << 1) {
|
||
|
gdImageSetPixel(im, x++, y, (b & bit) ? 1 : 0);
|
||
|
if (x == im->sx) {
|
||
|
--
|
||
|
2.20.1
|
||
|
|