summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/x509/x509_r2x.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/lib/libcrypto/x509/x509_r2x.c b/src/lib/libcrypto/x509/x509_r2x.c
index 143d0f1aa0..b3b8aa75ed 100644
--- a/src/lib/libcrypto/x509/x509_r2x.c
+++ b/src/lib/libcrypto/x509/x509_r2x.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_r2x.c,v 1.12 2021/11/01 20:53:08 tb Exp $ */ 1/* $OpenBSD: x509_r2x.c,v 1.13 2021/11/03 14:36:21 schwarze Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -74,6 +74,7 @@ X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey)
74 X509 *ret = NULL; 74 X509 *ret = NULL;
75 X509_CINF *xi = NULL; 75 X509_CINF *xi = NULL;
76 X509_NAME *xn; 76 X509_NAME *xn;
77 EVP_PKEY *pubkey;
77 78
78 if ((ret = X509_new()) == NULL) { 79 if ((ret = X509_new()) == NULL) {
79 X509error(ERR_R_MALLOC_FAILURE); 80 X509error(ERR_R_MALLOC_FAILURE);
@@ -88,14 +89,12 @@ X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey)
88 goto err; 89 goto err;
89 if (!ASN1_INTEGER_set(xi->version, 2)) 90 if (!ASN1_INTEGER_set(xi->version, 2))
90 goto err; 91 goto err;
91/* xi->extensions=ri->attributes; <- bad, should not ever be done
92 ri->attributes=NULL; */
93 } 92 }
94 93
95 xn = X509_REQ_get_subject_name(r); 94 xn = X509_REQ_get_subject_name(r);
96 if (X509_set_subject_name(ret, X509_NAME_dup(xn)) == 0) 95 if (X509_set_subject_name(ret, xn) == 0)
97 goto err; 96 goto err;
98 if (X509_set_issuer_name(ret, X509_NAME_dup(xn)) == 0) 97 if (X509_set_issuer_name(ret, xn) == 0)
99 goto err; 98 goto err;
100 99
101 if (X509_gmtime_adj(xi->validity->notBefore, 0) == NULL) 100 if (X509_gmtime_adj(xi->validity->notBefore, 0) == NULL)
@@ -104,14 +103,16 @@ X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey)
104 (long)60 * 60 * 24 * days) == NULL) 103 (long)60 * 60 * 24 * days) == NULL)
105 goto err; 104 goto err;
106 105
107 X509_set_pubkey(ret, X509_REQ_get_pubkey(r)); 106 if ((pubkey = X509_REQ_get0_pubkey(r)) == NULL)
107 goto err;
108 if (!X509_set_pubkey(ret, pubkey))
109 goto err;
108 110
109 if (!X509_sign(ret, pkey, EVP_md5())) 111 if (!X509_sign(ret, pkey, EVP_md5()))
110 goto err; 112 goto err;
111 if (0) { 113 return ret;
114
112err: 115err:
113 X509_free(ret); 116 X509_free(ret);
114 ret = NULL; 117 return NULL;
115 }
116 return (ret);
117} 118}