diff options
author | tb <> | 2023-12-14 14:04:46 +0000 |
---|---|---|
committer | tb <> | 2023-12-14 14:04:46 +0000 |
commit | 1960eee722991b72b4bf5afa5fd1227f30c59f02 (patch) | |
tree | 8cbcb01fec9e072b76e243ecbbca38987b5ac2b4 /src | |
parent | 73fcdec30ae4ba0b75e32641abc8c1761c164598 (diff) | |
download | openbsd-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.c | 49 |
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) | |||
279 | LCRYPTO_ALIAS(OBJ_add_object); | 279 | LCRYPTO_ALIAS(OBJ_add_object); |
280 | 280 | ||
281 | ASN1_OBJECT * | 281 | ASN1_OBJECT * |
282 | OBJ_nid2obj(int n) | 282 | OBJ_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 | } |
308 | LCRYPTO_ALIAS(OBJ_nid2obj); | 311 | LCRYPTO_ALIAS(OBJ_nid2obj); |
309 | 312 | ||