]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
* modules/md/md_crypt.c (md_cert_get_ari_cert_id):
authorJoe Orton <jorton@apache.org>
Mon, 6 Jul 2026 08:15:14 +0000 (08:15 +0000)
committerJoe Orton <jorton@apache.org>
Mon, 6 Jul 2026 08:15:14 +0000 (08:15 +0000)
  Don't used fixed buffer size for serial number,
  fail if ASN.1->BIGNUM conversion fails.

Github: closes #680

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1935926 13f79535-47bb-0310-9956-ffa450edef68

modules/md/md_crypt.c

index eef1268353921499d0fbc079e17441e0de97068d..a90eb0fc9b4fa2ce4ac699162928e46bcccb04fe 100644 (file)
@@ -2226,7 +2226,7 @@ apr_status_t md_cert_get_ari_cert_id(const char **pari_cert_id,
     const ASN1_INTEGER *serial;
     BIGNUM *bn;
     int i = -1, sder_len;
-    unsigned char *ucp, sbuf[256];
+    unsigned char *ucp, *sbuf;
 
     *pari_cert_id = NULL;
     s_aki = X509_get_ext_d2i(cert->x509, NID_authority_key_identifier, &i, NULL);
@@ -2253,6 +2253,10 @@ apr_status_t md_cert_get_ari_cert_id(const char **pari_cert_id,
     }
     memset(&ser_buf, 0, sizeof(ser_buf));
     bn = ASN1_INTEGER_to_BN(serial, NULL);
+    if (!bn) {
+        return APR_EINVAL;
+    }
+    sbuf = apr_pcalloc(p, BN_num_bytes(bn));
     sder_len = BN_bn2bin(bn, sbuf);
     BN_free(bn);
     if (sder_len < 1)