php / php/php-src

Failing tests with external libgd

Đang mở
#11,252 5 bình luận 1 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Bug Extension: gd Status: Verified
Ngôn ngữ chính
C
Star
40.4k
Fork
8.2k
Merge trung bình
2 ngày 13 giờ
Pull request đã merge (30 ngày)
96

Mô tả

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.

  1. 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.
  2. Tests where the output is slightly different. For example, bug45799.phpt is looking for Warning: imagepng(): gd-png error: no colors in palette in %s on line %d but gets Warning: imagepng(): gd-png error: no colors in palette\n in %s on line %d. These tests could be made to support both outputs.
  3. 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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu bằng cách chạy các ext/gd/tests được liệt kê với libgd bên ngoài và nhóm các lỗi thành các bài kiểm thử định dạng gd đã bị loại bỏ, khác biệt về đầu ra và các thay đổi căn bản về hành vi. Xem xét các tệp .phpt bị ảnh hưởng, bắt đầu với bug45799.phpt và các bài kiểm thử chuyển đổi gd, sau đó xác định bài kiểm thử nào có thể được loại bỏ, bài kiểm thử nào có thể chấp nhận cả hai đầu ra hoặc bài kiểm thử nào yêu cầu một bản sửa upstream. Công việc được coi là hoàn tất khi bộ kiểm thử libgd bên ngoài có cách xử lý rõ ràng cho từng lỗi.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
c, php
Lĩnh vực
backend, testing-qa
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.