Failing tests with external libgd
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
I was experimenting with using the system gd for our Gentoo package, and noticed a bunch of test failures:
Bug #38212 (Seg Fault on invalid imagecreatefromgd2part() parameters) [ext/gd/tests/bug38212-mb.phpt]
Bug #38212 (Seg Fault on invalid imagecreatefromgd2part() parameters) [ext/gd/tests/bug38212.phpt]
Bug #39780 (PNG image with CRC/data error raises a fatal error) [ext/gd/tests/bug39780_extern.phpt]
Bug #41442 (imagegd2() under output control) [ext/gd/tests/bug41442.phpt]
Bug #43073 (TrueType bounding box is wrong for angle<>0) [ext/gd/tests/bug43073.phpt]
Bug #45799 (imagepng() crashes on empty image). [ext/gd/tests/bug45799.phpt]
Bug #48732 (TTF Bounding box wrong for letters below baseline) [ext/gd/tests/bug48732-mb.phpt]
Bug #48732 (TTF Bounding box wrong for letters below baseline) [ext/gd/tests/bug48732.phpt]
Bug #48801 (Problem with imagettfbbox) [ext/gd/tests/bug48801-mb.phpt]
Bug #48801 (Problem with imagettfbbox) [ext/gd/tests/bug48801.phpt]
Bug #53504 imagettfbbox/imageftbbox gives incorrect values for bounding box [ext/gd/tests/bug53504.phpt]
Bug #65148 (imagerotate may alter image dimensions) [ext/gd/tests/bug65148.phpt]
Bug #66356 (Heap Overflow Vulnerability in imagecrop()) [ext/gd/tests/bug66356.phpt]
Bug #71912 (libgd: signedness vulnerability) [ext/gd/tests/bug71912-mb.phpt]
Bug #71912 (libgd: signedness vulnerability) [ext/gd/tests/bug71912.phpt]
Bug #72339 Integer Overflow in _gd2GetHeader() resulting in heap overflow [ext/gd/tests/bug72339.phpt]
Bug #73155 (imagegd2() writes wrong chunk sizes on boundaries) [ext/gd/tests/bug73155.phpt]
Bug #73157 (imagegd2() ignores 3rd param if 4 are given) [ext/gd/tests/bug73157.phpt]
Bug #73159 (imagegd2(): unrecognized formats may result in corrupted files) [ext/gd/tests/bug73159.phpt]
Bug #73161 (imagecreatefromgd2() may leak memory) [ext/gd/tests/bug73161.phpt]
Bug #73272 (imagescale() is not affected by, but affects imagesetinterpolation()) [ext/gd/tests/bug73272.phpt]
Bug 73868 (DOS vulnerability in gdImageCreateFromGd2Ctx()) [ext/gd/tests/bug73868.phpt]
Bug #73869 (Signed Integer Overflow gd_io.c) [ext/gd/tests/bug73869.phpt]
Bug #77272 (imagescale() may return image resource on failure) [ext/gd/tests/bug77272.phpt]
Bug #77479 (imagewbmp() segfaults with very large image) [ext/gd/tests/bug77479.phpt]
Bug #77973 (Uninitialized read in gdImageCreateFromXbm) [ext/gd/tests/bug77973.phpt]
Bug #79676 (imagescale adds black border with IMG_BICUBIC) [ext/gd/tests/bug79676.phpt]
Test max colors for a gd image. [ext/gd/tests/crafted_gd2.phpt]
imagecreatefromgd2 [ext/gd/tests/createfromgd2.phpt]
imagecreatefromwbmp with invalid wbmp [ext/gd/tests/createfromwbmp2_extern.phpt]
gif --> gd1/gd2 conversion test [ext/gd/tests/gif2gd.phpt]
imagegd() writes truecolor images without palette conversion [ext/gd/tests/imagegd_truecolor.phpt]
imagegetinterpolation() and imagesetinterpolation() basic test [ext/gd/tests/imageinterpolation_basic.phpt]
Scale images and preserve aspect ratio [ext/gd/tests/imagescale_preserve_ratio.phpt]
jpeg <--> gd1/gd2 conversion test [ext/gd/tests/jpg2gd-mb.phpt]
jpeg <--> gd1/gd2 conversion test [ext/gd/tests/jpg2gd.phpt]
libgd #86 (Possible infinite loop in imagecreatefrompng) [ext/gd/tests/libgd00086_extern.phpt]
png <--> gd1/gd2 conversion test [ext/gd/tests/png2gd.phpt]
xpm --> gd1/gd2 conversion test [ext/gd/tests/xpm2gd.phpt]
These fall into a few classes, some more difficult than others.
- Tests using the "gd" image format. The "gd" format was removed from libgd-2.3.3 (https://github.com/libgd/libgd/blob/master/CHANGELOG.md#233---2021-09-12). I think most of these tests are obsolete and can simply be deleted.
- Tests where the output is slightly different. For example,
bug45799.phptis looking forWarning: imagepng(): gd-png error: no colors in palette in %s on line %dbut getsWarning: imagepng(): gd-png error: no colors in palette\n in %s on line %d. These tests could be made to support both outputs. - Fundamental behavior changes that never made it upstream. I'm not sure how many of these there are, or how important they are, but they're obviously the hard ones to fix. Less important ones might simply be dropped; but useful ones should probably go upstream.
PHP Version
git master
Operating System
No response
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, die aufgeführten ext/gd/tests mit externem libgd auszuführen und die Fehler in entfernte gd-Format-Tests, Ausgabedifferenzen und grundlegende Verhaltensänderungen zu gruppieren. Prüfe die betroffenen .phpt-Dateien, beginnend mit bug45799.phpt und den gd-Konvertierungstests, und ermittle anschließend, welche Tests entfernt werden können, bei welchen beide Ausgaben akzeptiert werden können oder für welche eine Korrektur im Upstream erforderlich ist. Als erledigt gilt die Aufgabe, wenn für jeden Fehler im Testset mit externem libgd eine ausdrückliche Lösung festgelegt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, php
- Bereich
- backend, testing-qa
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 35/100