diff options
Diffstat (limited to 'src/lib/libcrypto/objects/obj_dat.c')
-rw-r--r-- | src/lib/libcrypto/objects/obj_dat.c | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/src/lib/libcrypto/objects/obj_dat.c b/src/lib/libcrypto/objects/obj_dat.c index 4b1bb9583a..8779ba7d1d 100644 --- a/src/lib/libcrypto/objects/obj_dat.c +++ b/src/lib/libcrypto/objects/obj_dat.c | |||
@@ -64,7 +64,7 @@ | |||
64 | #include <openssl/objects.h> | 64 | #include <openssl/objects.h> |
65 | 65 | ||
66 | /* obj_dat.h is generated from objects.h by obj_dat.pl */ | 66 | /* obj_dat.h is generated from objects.h by obj_dat.pl */ |
67 | #ifndef NO_OBJECT | 67 | #ifndef OPENSSL_NO_OBJECT |
68 | #include "obj_dat.h" | 68 | #include "obj_dat.h" |
69 | #else | 69 | #else |
70 | /* You will have to load all the objects needed manually in the application */ | 70 | /* You will have to load all the objects needed manually in the application */ |
@@ -108,12 +108,14 @@ static int ln_cmp(const void *a, const void *b) | |||
108 | return(strcmp((*ap)->ln,(*bp)->ln)); | 108 | return(strcmp((*ap)->ln,(*bp)->ln)); |
109 | } | 109 | } |
110 | 110 | ||
111 | static unsigned long add_hash(ADDED_OBJ *ca) | 111 | /* static unsigned long add_hash(ADDED_OBJ *ca) */ |
112 | static unsigned long add_hash(const void *ca_void) | ||
112 | { | 113 | { |
113 | ASN1_OBJECT *a; | 114 | const ASN1_OBJECT *a; |
114 | int i; | 115 | int i; |
115 | unsigned long ret=0; | 116 | unsigned long ret=0; |
116 | unsigned char *p; | 117 | unsigned char *p; |
118 | ADDED_OBJ *ca = (ADDED_OBJ *)ca_void; | ||
117 | 119 | ||
118 | a=ca->obj; | 120 | a=ca->obj; |
119 | switch (ca->type) | 121 | switch (ca->type) |
@@ -142,10 +144,13 @@ static unsigned long add_hash(ADDED_OBJ *ca) | |||
142 | return(ret); | 144 | return(ret); |
143 | } | 145 | } |
144 | 146 | ||
145 | static int add_cmp(ADDED_OBJ *ca, ADDED_OBJ *cb) | 147 | /* static int add_cmp(ADDED_OBJ *ca, ADDED_OBJ *cb) */ |
148 | static int add_cmp(const void *ca_void, const void *cb_void) | ||
146 | { | 149 | { |
147 | ASN1_OBJECT *a,*b; | 150 | ASN1_OBJECT *a,*b; |
148 | int i; | 151 | int i; |
152 | ADDED_OBJ *ca = (ADDED_OBJ *)ca_void; | ||
153 | ADDED_OBJ *cb = (ADDED_OBJ *)cb_void; | ||
149 | 154 | ||
150 | i=ca->type-cb->type; | 155 | i=ca->type-cb->type; |
151 | if (i) return(i); | 156 | if (i) return(i); |
@@ -171,7 +176,6 @@ static int add_cmp(ADDED_OBJ *ca, ADDED_OBJ *cb) | |||
171 | /* abort(); */ | 176 | /* abort(); */ |
172 | return 0; | 177 | return 0; |
173 | } | 178 | } |
174 | return(1); /* should not get here */ | ||
175 | } | 179 | } |
176 | 180 | ||
177 | static int init_added(void) | 181 | static int init_added(void) |
@@ -199,13 +203,17 @@ static void cleanup3(ADDED_OBJ *a) | |||
199 | OPENSSL_free(a); | 203 | OPENSSL_free(a); |
200 | } | 204 | } |
201 | 205 | ||
206 | static IMPLEMENT_LHASH_DOALL_FN(cleanup1, ADDED_OBJ *) | ||
207 | static IMPLEMENT_LHASH_DOALL_FN(cleanup2, ADDED_OBJ *) | ||
208 | static IMPLEMENT_LHASH_DOALL_FN(cleanup3, ADDED_OBJ *) | ||
209 | |||
202 | void OBJ_cleanup(void) | 210 | void OBJ_cleanup(void) |
203 | { | 211 | { |
204 | if (added == NULL) return; | 212 | if (added == NULL) return; |
205 | added->down_load=0; | 213 | added->down_load=0; |
206 | lh_doall(added,cleanup1); /* zero counters */ | 214 | lh_doall(added,LHASH_DOALL_FN(cleanup1)); /* zero counters */ |
207 | lh_doall(added,cleanup2); /* set counters */ | 215 | lh_doall(added,LHASH_DOALL_FN(cleanup2)); /* set counters */ |
208 | lh_doall(added,cleanup3); /* free objects */ | 216 | lh_doall(added,LHASH_DOALL_FN(cleanup3)); /* free objects */ |
209 | lh_free(added); | 217 | lh_free(added); |
210 | added=NULL; | 218 | added=NULL; |
211 | } | 219 | } |
@@ -219,7 +227,7 @@ int OBJ_new_nid(int num) | |||
219 | return(i); | 227 | return(i); |
220 | } | 228 | } |
221 | 229 | ||
222 | int OBJ_add_object(ASN1_OBJECT *obj) | 230 | int OBJ_add_object(const ASN1_OBJECT *obj) |
223 | { | 231 | { |
224 | ASN1_OBJECT *o; | 232 | ASN1_OBJECT *o; |
225 | ADDED_OBJ *ao[4]={NULL,NULL,NULL,NULL},*aop; | 233 | ADDED_OBJ *ao[4]={NULL,NULL,NULL,NULL},*aop; |
@@ -355,7 +363,7 @@ const char *OBJ_nid2ln(int n) | |||
355 | } | 363 | } |
356 | } | 364 | } |
357 | 365 | ||
358 | int OBJ_obj2nid(ASN1_OBJECT *a) | 366 | int OBJ_obj2nid(const ASN1_OBJECT *a) |
359 | { | 367 | { |
360 | ASN1_OBJECT **op; | 368 | ASN1_OBJECT **op; |
361 | ADDED_OBJ ad,*adp; | 369 | ADDED_OBJ ad,*adp; |
@@ -368,7 +376,7 @@ int OBJ_obj2nid(ASN1_OBJECT *a) | |||
368 | if (added != NULL) | 376 | if (added != NULL) |
369 | { | 377 | { |
370 | ad.type=ADDED_DATA; | 378 | ad.type=ADDED_DATA; |
371 | ad.obj=a; | 379 | ad.obj=(ASN1_OBJECT *)a; /* XXX: ugly but harmless */ |
372 | adp=(ADDED_OBJ *)lh_retrieve(added,&ad); | 380 | adp=(ADDED_OBJ *)lh_retrieve(added,&ad); |
373 | if (adp != NULL) return (adp->obj->nid); | 381 | if (adp != NULL) return (adp->obj->nid); |
374 | } | 382 | } |
@@ -422,7 +430,7 @@ ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name) | |||
422 | return op; | 430 | return op; |
423 | } | 431 | } |
424 | 432 | ||
425 | int OBJ_obj2txt(char *buf, int buf_len, ASN1_OBJECT *a, int no_name) | 433 | int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name) |
426 | { | 434 | { |
427 | int i,idx=0,n=0,len,nid; | 435 | int i,idx=0,n=0,len,nid; |
428 | unsigned long l; | 436 | unsigned long l; |
@@ -437,8 +445,7 @@ int OBJ_obj2txt(char *buf, int buf_len, ASN1_OBJECT *a, int no_name) | |||
437 | return(0); | 445 | return(0); |
438 | } | 446 | } |
439 | 447 | ||
440 | nid=OBJ_obj2nid(a); | 448 | if (no_name || (nid=OBJ_obj2nid(a)) == NID_undef) { |
441 | if ((nid == NID_undef) || no_name) { | ||
442 | len=a->length; | 449 | len=a->length; |
443 | p=a->data; | 450 | p=a->data; |
444 | 451 | ||
@@ -488,7 +495,7 @@ int OBJ_obj2txt(char *buf, int buf_len, ASN1_OBJECT *a, int no_name) | |||
488 | return(n); | 495 | return(n); |
489 | } | 496 | } |
490 | 497 | ||
491 | int OBJ_txt2nid(char *s) | 498 | int OBJ_txt2nid(const char *s) |
492 | { | 499 | { |
493 | ASN1_OBJECT *obj; | 500 | ASN1_OBJECT *obj; |
494 | int nid; | 501 | int nid; |
@@ -547,10 +554,11 @@ static int obj_cmp(const void *ap, const void *bp) | |||
547 | return(memcmp(a->data,b->data,a->length)); | 554 | return(memcmp(a->data,b->data,a->length)); |
548 | } | 555 | } |
549 | 556 | ||
550 | char *OBJ_bsearch(char *key, char *base, int num, int size, int (*cmp)(const void *, const void *)) | 557 | const char *OBJ_bsearch(const char *key, const char *base, int num, int size, |
558 | int (*cmp)(const void *, const void *)) | ||
551 | { | 559 | { |
552 | int l,h,i,c; | 560 | int l,h,i,c; |
553 | char *p; | 561 | const char *p; |
554 | 562 | ||
555 | if (num == 0) return(NULL); | 563 | if (num == 0) return(NULL); |
556 | l=0; | 564 | l=0; |
@@ -629,7 +637,7 @@ int OBJ_create_objects(BIO *in) | |||
629 | /* return(num); */ | 637 | /* return(num); */ |
630 | } | 638 | } |
631 | 639 | ||
632 | int OBJ_create(char *oid, char *sn, char *ln) | 640 | int OBJ_create(const char *oid, const char *sn, const char *ln) |
633 | { | 641 | { |
634 | int ok=0; | 642 | int ok=0; |
635 | ASN1_OBJECT *op=NULL; | 643 | ASN1_OBJECT *op=NULL; |
@@ -645,6 +653,8 @@ int OBJ_create(char *oid, char *sn, char *ln) | |||
645 | return(0); | 653 | return(0); |
646 | } | 654 | } |
647 | i=a2d_ASN1_OBJECT(buf,i,oid,-1); | 655 | i=a2d_ASN1_OBJECT(buf,i,oid,-1); |
656 | if (i == 0) | ||
657 | goto err; | ||
648 | op=(ASN1_OBJECT *)ASN1_OBJECT_create(OBJ_new_nid(1),buf,i,sn,ln); | 658 | op=(ASN1_OBJECT *)ASN1_OBJECT_create(OBJ_new_nid(1),buf,i,sn,ln); |
649 | if (op == NULL) | 659 | if (op == NULL) |
650 | goto err; | 660 | goto err; |