Skip to content

Commit df4aaa8

Browse files
committed
Fix Bug #68713 infinite loop / infinite free
PHP not affected (emalloc never return NULL) Just to reduce diff with upstream and for legibility Apply: https://bitbucket.org/libgd/gd-libgd/commits/3c0d2203b2672b688d4d2326ff3a60b019879062 https://bitbucket.org/libgd/gd-libgd/commits/4af76c97a478d4e7c4b64e08ac67abbca7cbd0fb
1 parent c3b44b1 commit df4aaa8

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

ext/gd/libgd/gd.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3049,8 +3049,8 @@ int gdImagePaletteToTrueColor(gdImagePtr src)
30493049
}
30503050
}
30513051

3052-
/* free old palette buffer */
3053-
for (yy = y - 1; yy >= yy - 1; yy--) {
3052+
/* free old palette buffer (y is sy) */
3053+
for (yy = 0; yy < y; yy++) {
30543054
gdFree(src->pixels[yy]);
30553055
}
30563056
gdFree(src->pixels);
@@ -3067,13 +3067,11 @@ int gdImagePaletteToTrueColor(gdImagePtr src)
30673067
return 1;
30683068

30693069
clean_on_error:
3070-
if (y > 0) {
3071-
3072-
for (yy = y; yy >= yy - 1; y--) {
3073-
gdFree(src->tpixels[y]);
3074-
}
3075-
gdFree(src->tpixels);
3070+
/* free new true color buffer (y is not allocated, have failed) */
3071+
for (yy = 0; yy < y; yy++) {
3072+
gdFree(src->tpixels[yy]);
30763073
}
3074+
gdFree(src->tpixels);
30773075
return 0;
30783076
}
30793077

0 commit comments

Comments
 (0)