Fix memory leak on invalid CertificateRequest.
authorDavid Benjamin <davidben@google.com>
Mon, 14 Mar 2016 19:03:07 +0000 (15:03 -0400)
committerDr. Stephen Henson <steve@openssl.org>
Thu, 7 Apr 2016 18:22:20 +0000 (19:22 +0100)
Free up parsed X509_NAME structure if the CertificateRequest message
contains excess data.

The security impact is considered insignificant. This is a client side
only leak and a large number of connections to malicious servers would
be needed to have a significant impact.

This was found by libFuzzer.

Reviewed-by: Emilia Käsper <emilia@openssl.org>
Reviewed-by: Stephen Henson <steve@openssl.org>
ssl/statem/statem_clnt.c

index 73f54bcb96c7b4a67029b3f98a57fbeb64e75d84..4806e6782b63eafdf08347b2c5999e33443d008a 100644 (file)
@@ -1863,6 +1863,7 @@ MSG_PROCESS_RETURN tls_process_certificate_request(SSL *s, PACKET *pkt)
             SSLerr(SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST, ERR_R_MALLOC_FAILURE);
             goto err;
         }
+        xn = NULL;
     }
 
     /* we should setup a certificate to return.... */
@@ -1877,6 +1878,7 @@ MSG_PROCESS_RETURN tls_process_certificate_request(SSL *s, PACKET *pkt)
  err:
     ossl_statem_set_error(s);
  done:
+    X509_NAME_free(xn);
     sk_X509_NAME_pop_free(ca_sk, X509_NAME_free);
     return ret;
 }