Skip to content

Commit ecf4e70

Browse files
committed
Merge branch 'PHP-7.4' into master
* PHP-7.4: Fix potential integer overflow detected by oss-fuzz
2 parents 1fb66b8 + 5dd1877 commit ecf4e70

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

ext/gd/libgd/gd.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,6 +1463,8 @@ void gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
14631463
int cx, cy;
14641464
int px, py;
14651465
int fline;
1466+
const int xuppper = (x > INT_MAX - f->w) ? INT_MAX : x + f->w;
1467+
const int yuppper = (y > INT_MAX - f->h) ? INT_MAX : y + f->h;
14661468
cx = 0;
14671469
cy = 0;
14681470
#ifdef CHARSET_EBCDIC
@@ -1472,8 +1474,8 @@ void gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
14721474
return;
14731475
}
14741476
fline = (c - f->offset) * f->h * f->w;
1475-
for (py = y; (py < (y + f->h)); py++) {
1476-
for (px = x; (px < (x + f->w)); px++) {
1477+
for (py = y; py < yuppper; py++) {
1478+
for (px = x; px < xuppper; px++) {
14771479
if (f->data[fline + cy * f->w + cx]) {
14781480
gdImageSetPixel(im, px, py, color);
14791481
}
@@ -1489,6 +1491,8 @@ void gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
14891491
int cx, cy;
14901492
int px, py;
14911493
int fline;
1494+
const int xuppper = (x > INT_MAX - f->h) ? INT_MAX : x + f->h;
1495+
const int ylower = (y < INT_MIN + f->w) ? INT_MIN : y - f->w;
14921496
cx = 0;
14931497
cy = 0;
14941498
#ifdef CHARSET_EBCDIC
@@ -1498,8 +1502,8 @@ void gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
14981502
return;
14991503
}
15001504
fline = (c - f->offset) * f->h * f->w;
1501-
for (py = y; py > (y - f->w); py--) {
1502-
for (px = x; px < (x + f->h); px++) {
1505+
for (py = y; py > ylower; py--) {
1506+
for (px = x; px < xuppper; px++) {
15031507
if (f->data[fline + cy * f->w + cx]) {
15041508
gdImageSetPixel(im, px, py, color);
15051509
}

0 commit comments

Comments
 (0)