From: Dr. Stephen Henson Date: Fri, 5 Jun 2015 13:23:27 +0000 (+0100) Subject: Check ASN1_INTEGER_get for errors. X-Git-Tag: OpenSSL_1_1_0-pre1~1028 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4336de0c6392d98c32bc27717173130d5e7389aa;p=openssl Check ASN1_INTEGER_get for errors. Check return value when calling ASN1_INTEGER_get to retrieve a certificate serial number. If an error occurs (which will be caused by the value being out of range) revert to hex dump of serial number. Reviewed-by: Rich Salz --- diff --git a/crypto/asn1/t_x509.c b/crypto/asn1/t_x509.c index 377be399df..12a9ed4940 100644 --- a/crypto/asn1/t_x509.c +++ b/crypto/asn1/t_x509.c @@ -141,7 +141,13 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, bs = X509_get_serialNumber(x); if (bs->length <= (int)sizeof(long)) { - l = ASN1_INTEGER_get(bs); + ERR_set_mark(); + l = ASN1_INTEGER_get(bs); + ERR_pop_to_mark(); + } else { + l = -1; + } + if (l != -1) { if (bs->type == V_ASN1_NEG_INTEGER) { l = -l; neg = "-";