summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/x509/x509_lib.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/lib/libcrypto/x509/x509_lib.c b/src/lib/libcrypto/x509/x509_lib.c
index 161e638427..8382babbdf 100644
--- a/src/lib/libcrypto/x509/x509_lib.c
+++ b/src/lib/libcrypto/x509/x509_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_lib.c,v 1.22 2024/06/17 05:31:26 tb Exp $ */ 1/* $OpenBSD: x509_lib.c,v 1.23 2024/06/17 05:38:08 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 1999. 3 * project 1999.
4 */ 4 */
@@ -187,7 +187,8 @@ LCRYPTO_ALIAS(X509V3_EXT_d2i);
187 */ 187 */
188 188
189void * 189void *
190X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx) 190X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x509_exts, int nid, int *crit,
191 int *idx)
191{ 192{
192 X509_EXTENSION *ext; 193 X509_EXTENSION *ext;
193 int lastpos = idx == NULL ? -1 : *idx; 194 int lastpos = idx == NULL ? -1 : *idx;
@@ -201,11 +202,11 @@ X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx)
201 * Nothing to do if no extensions, unknown nid, or missing extension. 202 * Nothing to do if no extensions, unknown nid, or missing extension.
202 */ 203 */
203 204
204 if (x == NULL) 205 if (x509_exts == NULL)
205 return NULL; 206 return NULL;
206 if ((lastpos = X509v3_get_ext_by_NID(x, nid, lastpos)) < 0) 207 if ((lastpos = X509v3_get_ext_by_NID(x509_exts, nid, lastpos)) < 0)
207 return NULL; 208 return NULL;
208 if ((ext = X509v3_get_ext(x, lastpos)) == NULL) 209 if ((ext = X509v3_get_ext(x509_exts, lastpos)) == NULL)
209 return NULL; 210 return NULL;
210 211
211 /* 212 /*
@@ -214,7 +215,7 @@ X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx)
214 * don't care and set *idx to the index of the first extension found. 215 * don't care and set *idx to the index of the first extension found.
215 */ 216 */
216 217
217 if (idx == NULL && X509v3_get_ext_by_NID(x, nid, lastpos) > 0) { 218 if (idx == NULL && X509v3_get_ext_by_NID(x509_exts, nid, lastpos) > 0) {
218 if (crit != NULL) 219 if (crit != NULL)
219 *crit = -2; 220 *crit = -2;
220 return NULL; 221 return NULL;
@@ -236,10 +237,10 @@ X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx)
236LCRYPTO_ALIAS(X509V3_get_d2i); 237LCRYPTO_ALIAS(X509V3_get_d2i);
237 238
238int 239int
239X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, 240X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x509_exts, int nid, void *value,
240 int crit, unsigned long flags) 241 int crit, unsigned long flags)
241{ 242{
242 STACK_OF(X509_EXTENSION) *exts = *x; 243 STACK_OF(X509_EXTENSION) *exts = *x509_exts;
243 X509_EXTENSION *ext = NULL; 244 X509_EXTENSION *ext = NULL;
244 X509_EXTENSION *existing; 245 X509_EXTENSION *existing;
245 int extidx; 246 int extidx;
@@ -247,7 +248,7 @@ X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value,
247 int ret = 0; 248 int ret = 0;
248 249
249 /* See if the extension already exists. */ 250 /* See if the extension already exists. */
250 extidx = X509v3_get_ext_by_NID(*x, nid, -1); 251 extidx = X509v3_get_ext_by_NID(*x509_exts, nid, -1);
251 252
252 switch (flags & X509V3_ADD_OP_MASK) { 253 switch (flags & X509V3_ADD_OP_MASK) {
253 case X509V3_ADD_DEFAULT: 254 case X509V3_ADD_DEFAULT:
@@ -287,7 +288,8 @@ X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value,
287 errcode = X509V3_R_EXTENSION_NOT_FOUND; 288 errcode = X509V3_R_EXTENSION_NOT_FOUND;
288 goto err; 289 goto err;
289 } 290 }
290 if ((existing = sk_X509_EXTENSION_delete(*x, extidx)) == NULL) { 291 if ((existing = sk_X509_EXTENSION_delete(*x509_exts,
292 extidx)) == NULL) {
291 ret = -1; 293 ret = -1;
292 goto err; 294 goto err;
293 } 295 }
@@ -310,10 +312,10 @@ X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value,
310 312
311 /* If extension exists, replace it. */ 313 /* If extension exists, replace it. */
312 if (extidx >= 0) { 314 if (extidx >= 0) {
313 existing = sk_X509_EXTENSION_value(*x, extidx); 315 existing = sk_X509_EXTENSION_value(*x509_exts, extidx);
314 X509_EXTENSION_free(existing); 316 X509_EXTENSION_free(existing);
315 existing = NULL; 317 existing = NULL;
316 if (sk_X509_EXTENSION_set(*x, extidx, ext) == NULL) { 318 if (sk_X509_EXTENSION_set(*x509_exts, extidx, ext) == NULL) {
317 /* 319 /*
318 * XXX - Can't happen. If it did happen, |existing| is 320 * XXX - Can't happen. If it did happen, |existing| is
319 * now a freed pointer. Nothing we can do here. 321 * now a freed pointer. Nothing we can do here.
@@ -332,7 +334,7 @@ X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value,
332 goto err; 334 goto err;
333 ext = NULL; 335 ext = NULL;
334 336
335 *x = exts; 337 *x509_exts = exts;
336 338
337 done: 339 done:
338 return 1; 340 return 1;
@@ -341,7 +343,7 @@ X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value,
341 if ((flags & X509V3_ADD_SILENT) == 0 && errcode != 0) 343 if ((flags & X509V3_ADD_SILENT) == 0 && errcode != 0)
342 X509V3error(errcode); 344 X509V3error(errcode);
343 345
344 if (exts != *x) 346 if (exts != *x509_exts)
345 sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free); 347 sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free);
346 X509_EXTENSION_free(ext); 348 X509_EXTENSION_free(ext);
347 349