summaryrefslogtreecommitdiffstats
path: root/crypto/x509/t_req.c
diff options
context:
space:
mode:
authorKurt Roeckx <kurt@roeckx.be>2017-01-14 16:10:25 +0100
committerKurt Roeckx <kurt@roeckx.be>2017-01-15 22:22:44 +0100
commitc565e99a14bf43f11d006d36612fe7943f9e817f (patch)
tree23020d57c00bb455bd361c492b7339440e446ccc /crypto/x509/t_req.c
parent39ff4d7adde80b87c994649559921b9189b9612f (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.c9
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)