`openssl_pkcs7_read()` / `openssl_cms_read()`: CRLs overwrite certificates in the output array
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 70/100
Hướng nghiên cứu
Bắt đầu bằng cách tìm các phần triển khai của openssl_pkcs7_read() và openssl_cms_read(), rồi kiểm tra cách mỗi vòng lặp chọn chỉ số mảng khi thêm chứng chỉ và CRL. Tái hiện sự cố bằng ví dụ gói PKCS#7 được cung cấp, sau đó kiểm tra xem đầu ra có giữ cả hai mục theo đúng thứ tự hay không. Cũng xác nhận bản sửa bằng một gói CMS, vì báo cáo cho biết hành vi tương tự cũng xảy ra ở đó.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Description
openssl_pkcs7_read() and openssl_cms_read() fill the output array with the certificates first and then with the CRLs. Both loops use their own loop counter as the array index (add_index_zval(zout, i, ...)), so the CRL loop starts again from index 0. Each CRL replaces the certificate stored at the same index, and those certificates are lost.
Reproducer
<?php
// $pem is a PKCS#7 bundle with one certificate and one CRL, e.g. created with:
// openssl crl2pkcs7 -in crl.pem -certfile cert.pem -out bundle.p7b
$pem = file_get_contents('bundle.p7b');
var_dump(openssl_pkcs7_read($pem, $result));
var_dump(count($result));
foreach ($result as $i => $item) {
echo $i, ': ', strtok($item, "\n"), "\n";
}
Expected result
bool(true)
int(2)
0: -----BEGIN CERTIFICATE-----
1: -----BEGIN X509 CRL-----
Actual result
bool(true)
int(1)
0: -----BEGIN X509 CRL-----
The certificate is gone. The same happens in openssl_cms_read() with a CMS bundle.
PHP Version
PHP 8.4 and later (the code is the same on 8.5 and master).
PHP Version
PHP 8.4.28
Operating System
No response
- Ngôn ngữ chính
- C
- Star
- 40.7k
- Fork
- 8.3k
- Merge trung bình
- 2 ngày 17 giờ
- Pull request đã merge (30 ngày)
- 159
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
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 php/php-src
-
ext/mbstring: mb_regex_substitute() reads past the replacement string's end on a truncated trailing multibyte lead byteCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
php/php-src#24769 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
zend_set_local_var() overwrites existing compiled variable (CV) zval without calling zval_ptr_dtor()Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởBug Status: Needs Triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
master: part of the mbstring bailout fix got lost in a mergeCó thể đã có người làm @lazerg đã nhận 6 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Bug Status: Needs Triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
Maintainer thường phản hồi trong vòng 1 ngày
-
quoted_printable_encode() produces lines longer than 76 characters for bytes 0xF5 to 0xFFCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Abort (SIGABRT) when stderr is a closed pipe: uncaught fmt::system_error in ccache_main's catchCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 3 ngày
-
common/amount: parse_amount_sat misparses sub-satoshi msat with leading zero and accepts invalid suffixesCó thể đã có người làm @bhuvan-somisetty đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
ElementsProject/lightning#9674 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
mcp: a projectPath naming a file inside a project returns isError ("Path is not a directory")Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
colbymchenry/codegraph#2982 ·
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 72/100
Maintainer thường phản hồi trong vòng 1 ngày