Skip to content
Browse files
Fix Null pointer deref in X509_issuer_and_serial_hash()
The OpenSSL public API function X509_issuer_and_serial_hash() attempts
to create a unique hash value based on the issuer and serial number data
contained within an X509 certificate. However it fails to correctly
handle any errors that may occur while parsing the issuer field (which
might occur if the issuer field is maliciously constructed). This may
subsequently result in a NULL pointer deref and a crash leading to a
potential denial of service attack.

The function X509_issuer_and_serial_hash() is never directly called by
OpenSSL itself so applications are only vulnerable if they use this
function directly and they use it on certificates that may have been
obtained from untrusted sources.


Reviewed-by: Richard Levitte <>
Reviewed-by: Paul Dale <>
(cherry picked from commit 8130d65)
  • Loading branch information
mattcaswell committed Feb 16, 2021
1 parent c8c6e74 commit 122a19ab48091c657f7cb1fb3af9fc07bd557bbf
Showing with 2 additions and 0 deletions.
  1. +2 −0 crypto/x509/x509_cmp.c
@@ -39,6 +39,8 @@ unsigned long X509_issuer_and_serial_hash(X509 *a)
if (ctx == NULL)
goto err;
f = X509_NAME_oneline(a->cert_info.issuer, NULL, 0);
if (f == NULL)
goto err;
if (!EVP_DigestInit_ex(ctx, EVP_md5(), NULL))
goto err;
if (!EVP_DigestUpdate(ctx, (unsigned char *)f, strlen(f)))

1 comment on commit 122a19a


This comment has been minimized.

Copy link

@billz1990 billz1990 commented on 122a19a Mar 12, 2021

Change in

Please sign in to comment.