summaryrefslogtreecommitdiffstats
path: root/crypto/x509
diff options
context:
space:
mode:
authorKurt Roeckx <kurt@roeckx.be>2017-01-14 15:58:42 +0100
committerKurt Roeckx <kurt@roeckx.be>2017-01-15 22:22:40 +0100
commitb17d15f07ab02b8449db096eaafa56e93b242dee (patch)
tree9a941f07f8641b08773f92d5358c7fc2395150b1 /crypto/x509
parentba2efdc9ed75659a75d8b8c3cd4ae5bd3c181c65 (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.c6
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)" : "";