`openssl_pkcs7_read()` / `openssl_cms_read()`: CRLs overwrite certificates in the output array
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 70/100
Rechercherichtung
Beginne damit, die Implementierungen von openssl_pkcs7_read() und openssl_cms_read() zu finden, und prüfe, wie jede Schleife beim Hinzufügen von Zertifikaten und CRLs die Array-Indizes auswählt. Reproduziere das Problem mit dem bereitgestellten PKCS#7-Bundle-Beispiel und prüfe anschließend, ob die Ausgabe beide Einträge in der richtigen Reihenfolge enthält. Bestätige die Korrektur auch mit einem CMS-Bundle, da der Bericht dasselbe Verhalten dort meldet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
- Vorherrschende Sprache
- C
- Sterne
- 40.7k
- Forks
- 8.3k
- Ø Merge
- 2 T. 17 Std.
- Gemergte PRs (30 T.)
- 159
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus php/php-src
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
php/php-src#24769 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
zend_set_local_var() overwrites existing compiled variable (CV) zval without calling zval_ptr_dtor()Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. OffenBug Status: Needs Triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
master: part of the mbstring bailout fix got lost in a mergeEvtl. vergeben @lazerg hat das vor 5 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Bug Status: Needs Triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
Maintainer antworten meist innerhalb von 1 Tag
-
quoted_printable_encode() produces lines longer than 76 characters for bytes 0xF5 to 0xFFEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
enhancement ui
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
ChupathingyCE/chupathingyce#485 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Need to correct all URLsOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
JustAResearcher/gpu-unlock-ada#98 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 79/100
FujiNetWIFI/fujinet-firmware#2216 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
Maintainer antworten meist innerhalb von 2 Tagen