`openssl_pkcs7_read()` / `openssl_cms_read()`: CRLs overwrite certificates in the output array
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 70/100
Piste de recherche
Commencez par localiser les implémentations de openssl_pkcs7_read() et openssl_cms_read(), puis examinez comment chaque boucle choisit les indices du tableau lors de l’ajout de certificats et de CRL. Reproduisez le problème avec l’exemple de bundle PKCS#7 fourni, puis vérifiez que la sortie conserve les deux entrées dans l’ordre. Confirmez également la correction avec un bundle CMS, puisque le rapport signale le même comportement dans ce cas.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- C
- Étoiles
- 40.7k
- Forks
- 8.3k
- Merge moyen
- 2 j 17 h
- PR mergées (30 j)
- 159
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de php/php-src
-
ext/mbstring: mb_regex_substitute() reads past the replacement string's end on a truncated trailing multibyte lead bytePeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
php/php-src#24769 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
zend_set_local_var() overwrites existing compiled variable (CV) zval without calling zval_ptr_dtor()Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. OuverteBug Status: Needs Triage
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
master: part of the mbstring bailout fix got lost in a mergePeut-être pris @lazerg l’a pris il y a 6 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Bug Status: Needs Triage
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
Les mainteneurs répondent en général sous 1 jour
-
quoted_printable_encode() produces lines longer than 76 characters for bytes 0xF5 to 0xFFPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de php/php-src
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 2 jours
-
Abort (SIGABRT) when stderr is a closed pipe: uncaught fmt::system_error in ccache_main's catchPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 3 jours
-
common/amount: parse_amount_sat misparses sub-satoshi msat with leading zero and accepts invalid suffixesPeut-être pris @bhuvan-somisetty l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
ElementsProject/lightning#9674 ·
Les mainteneurs répondent en général sous 1 jour
-
mcp: a projectPath naming a file inside a project returns isError ("Path is not a directory")Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
colbymchenry/codegraph#2982 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour