API misuse in fuzz_ppd_gen_conflicts.c: cupsGetConflicts return value ignored
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 1/5
- Thời gian dự kiến
- Dưới một giờ
- Mức phù hợp với người mới
- 75/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- c
- Lĩnh vực
- testing-qa
Hướng nghiên cứu
Bắt đầu trong fuzz_ppd_gen_conflicts.c tại dòng 38 và so sánh cách sử dụng API với ví dụ trong cups/testppd.c. Xác minh rằng số lượng xung đột và con trỏ options vẫn nhất quán khi cupsResolveConflicts được gọi, sau đó chạy fuzz target để xác nhận rằng việc giải quyết xung đột được kiểm thử mà không có sự không khớp đã được báo cáo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
The fuzzer fuzz_ppd_gen_conflicts.c incorrectly uses the cupsGetConflicts API by ignoring its return value, causing mismatched option count and pointer state when calling cupsResolveConflicts.
Problem
Line 38 ignores the return value:
cupsGetConflicts(ppd, "SampleOption", "SampleChoice", &options); // ❌ Return value ignored
cupsGetConflicts modifies *options and returns the new count, but the fuzzer continues using the old num_options value from line 31.
Consequence
- Passes mismatched
num_optionsand*optionstocupsResolveConflicts - Before upstream fix (5b5f5c0d6): NULL pointer dereference crash
- After fix: Logic errors, cannot properly test conflict resolution
Correct Usage
From cups/testppd.c:
num_options = cupsGetConflicts(ppd, "InputSlot", "Envelope", &options);
Should capture and use the return value.
Reference
As noted by @michaelrsweet in GHSA-r4j5-9gvw-5h7q:
"your PoC code uses the cupsGetConflicts API incorrectly - it returns the number of conflicting options, but you are ignoring the return value."
This prevents proper fuzzing of CUPS conflict resolution logic.
- Ngôn ngữ chính
- C
- Star
- 8
- Fork
- 18
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của OpenPrinting/fuzzing
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
OpenPrinting/fuzzing#47 · 4 bình luận · 1 reaction ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 52/100
OpenPrinting/fuzzing#46 ·
-
Memory allocation/deallocation mismatch in fuzz_array.c causes immediate crash with AddressSanitizerĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 55/100
OpenPrinting/fuzzing#43 ·
-
Memory leak in cups `fuzz_ppd` harnessCó thể đã có người làm @princemittalr đã nhận 38 ngày trước. Đang mởbug good first issue
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
OpenPrinting/fuzzing#7 ·
-
Failed coverage building for cups-filtersCó thể đã có người làm @dipak0000812 đã nhận 196 ngày trước. Đang mởgood first issue
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
OpenPrinting/fuzzing#5 · 1 bình luận ·
Tất cả issue của OpenPrinting/fuzzing
Issue tương tự
-
Discover carries headerEdges that nothing reads since #1914 moved E0507/E0517 to the compiler graphĐang mởtech-debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
2个显示的问题Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
coolsnowwolf/lede#14209 ·
-
Status: Opened
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100
Maintainer thường phản hồi trong vòng 3 ngày