diff options
author | Kurt Roeckx <kurt@roeckx.be> | 2017-01-14 15:58:42 +0100 |
---|---|---|
committer | Kurt Roeckx <kurt@roeckx.be> | 2017-01-15 22:22:40 +0100 |
commit | b17d15f07ab02b8449db096eaafa56e93b242dee (patch) | |
tree | 9a941f07f8641b08773f92d5358c7fc2395150b1 /crypto/x509 | |
parent | ba2efdc9ed75659a75d8b8c3cd4ae5bd3c181c65 (diff) |
Fix undefined behaviour when printing the X509 serial
Found by afl
Reviewed-by: Andy Polyakov <appro@openssl.org>
GH: #2230
(cherry picked from commit 244d7b288f2b9ab7f6a2dbf068eccd6e20d9eef6)
Diffstat (limited to 'crypto/x509')
-rw-r--r-- | crypto/x509/t_x509.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/crypto/x509/t_x509.c b/crypto/x509/t_x509.c index ce670460ee..5119c0e6f7 100644 --- a/crypto/x509/t_x509.c +++ b/crypto/x509/t_x509.c @@ -93,12 +93,14 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, l = -1; } if (l != -1) { + unsigned long ul; if (bs->type == V_ASN1_NEG_INTEGER) { - l = -l; + ul = 0 - (unsigned long)l; neg = "-"; } else + ul = l; neg = ""; - if (BIO_printf(bp, " %s%lu (%s0x%lx)\n", neg, l, neg, l) <= 0) + if (BIO_printf(bp, " %s%lu (%s0x%lx)\n", neg, ul, neg, ul) <= 0) goto err; } else { neg = (bs->type == V_ASN1_NEG_INTEGER) ? " (Negative)" : ""; |