summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2023-12-14 14:04:46 +0000
committertb <>2023-12-14 14:04:46 +0000
commit1960eee722991b72b4bf5afa5fd1227f30c59f02 (patch)
tree8cbcb01fec9e072b76e243ecbbca38987b5ac2b4 /src
parent73fcdec30ae4ba0b75e32641abc8c1761c164598 (diff)
downloadopenbsd-1960eee722991b72b4bf5afa5fd1227f30c59f02.tar.gz
openbsd-1960eee722991b72b4bf5afa5fd1227f30c59f02.tar.bz2
openbsd-1960eee722991b72b4bf5afa5fd1227f30c59f02.zip
Simplify OBJ_nid2obj()
This is now yet another identical copy of the same code... Next step will be to dedup. ok jsing
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/objects/obj_dat.c49
1 files changed, 26 insertions, 23 deletions
diff --git a/src/lib/libcrypto/objects/obj_dat.c b/src/lib/libcrypto/objects/obj_dat.c
index 336673aefe..94841b4265 100644
--- a/src/lib/libcrypto/objects/obj_dat.c
+++ b/src/lib/libcrypto/objects/obj_dat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: obj_dat.c,v 1.67 2023/12/14 14:02:57 tb Exp $ */ 1/* $OpenBSD: obj_dat.c,v 1.68 2023/12/14 14:04:46 tb 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 *
@@ -279,31 +279,34 @@ OBJ_add_object(const ASN1_OBJECT *obj)
279LCRYPTO_ALIAS(OBJ_add_object); 279LCRYPTO_ALIAS(OBJ_add_object);
280 280
281ASN1_OBJECT * 281ASN1_OBJECT *
282OBJ_nid2obj(int n) 282OBJ_nid2obj(int nid)
283{ 283{
284 ADDED_OBJ ad, *adp; 284 if (nid >= 0 && nid < NUM_NID) {
285 ASN1_OBJECT ob; 285 if (nid == NID_undef || nid_objs[nid].nid != NID_undef)
286 return (ASN1_OBJECT *)&nid_objs[nid];
286 287
287 if ((n >= 0) && (n < NUM_NID)) { 288 goto unknown;
288 if ((n != NID_undef) && (nid_objs[n].nid == NID_undef)) {
289 OBJerror(OBJ_R_UNKNOWN_NID);
290 return (NULL);
291 }
292 return ((ASN1_OBJECT *)&(nid_objs[n]));
293 } else if (added == NULL)
294 return (NULL);
295 else {
296 ad.type = ADDED_NID;
297 ad.obj = &ob;
298 ob.nid = n;
299 adp = lh_ADDED_OBJ_retrieve(added, &ad);
300 if (adp != NULL)
301 return (adp->obj);
302 else {
303 OBJerror(OBJ_R_UNKNOWN_NID);
304 return (NULL);
305 }
306 } 289 }
290
291 /* XXX - locking. */
292 if (added != NULL) {
293 ASN1_OBJECT aobj = {
294 .nid = nid,
295 };
296 ADDED_OBJ needle = {
297 .type = ADDED_NID,
298 .obj = &aobj,
299 };
300 ADDED_OBJ *found;
301
302 if ((found = lh_ADDED_OBJ_retrieve(added, &needle)) != NULL)
303 return found->obj;
304 }
305
306 unknown:
307 OBJerror(OBJ_R_UNKNOWN_NID);
308
309 return NULL;
307} 310}
308LCRYPTO_ALIAS(OBJ_nid2obj); 311LCRYPTO_ALIAS(OBJ_nid2obj);
309 312