diff options
author | Kurt Roeckx <kurt@roeckx.be> | 2017-01-14 16:10:25 +0100 |
---|---|---|
committer | Kurt Roeckx <kurt@roeckx.be> | 2017-01-15 22:22:44 +0100 |
commit | c565e99a14bf43f11d006d36612fe7943f9e817f (patch) | |
tree | 23020d57c00bb455bd361c492b7339440e446ccc /crypto/x509/t_req.c | |
parent | 39ff4d7adde80b87c994649559921b9189b9612f (diff) |
Fix undefined behaviour when printing the X509 and CRL version
Found by oss-fuzz
Reviewed-by: Andy Polyakov <appro@openssl.org>
GH: #2231
(cherry picked from commit c2ce477f1f3c0a98802fb087b0cf4b0a99ea2b1d)
Diffstat (limited to 'crypto/x509/t_req.c')
-rw-r--r-- | crypto/x509/t_req.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/crypto/x509/t_req.c b/crypto/x509/t_req.c index 0fced677dd..77ce810835 100644 --- a/crypto/x509/t_req.c +++ b/crypto/x509/t_req.c @@ -60,8 +60,13 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags, } if (!(cflag & X509_FLAG_NO_VERSION)) { l = X509_REQ_get_version(x); - if (BIO_printf(bp, "%8sVersion: %ld (0x%lx)\n", "", l + 1, l) <= 0) - goto err; + if (l >= 0 && l <= 2) { + if (BIO_printf(bp, "%8sVersion: %ld (0x%lx)\n", "", l + 1, (unsigned long)l) <= 0) + goto err; + } else { + if (BIO_printf(bp, "%8sVersion: Unknown (%ld)\n", "", l) <= 0) + goto err; + } } if (!(cflag & X509_FLAG_NO_SUBJECT)) { if (BIO_printf(bp, " Subject:%c", mlch) <= 0) |