Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

`openssl_pkcs7_read()` / `openssl_cms_read()`: CRLs overwrite certificates in the output array

Offen Anfängerfreundlich
#24,784 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
c, php
Bereich
backend, security

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

Bug Status: Needs Triage
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

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus php/php-src

Alle Issues in php/php-src

Ähnliche Issues

Weitere Issues zu C

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.