summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/objects/obj_dat.c
diff options
context:
space:
mode:
authorbeck <>2000-12-15 02:58:47 +0000
committerbeck <>2000-12-15 02:58:47 +0000
commit9200bb13d15da4b2a23e6bc92c20e95b74aa2113 (patch)
tree5c52d628ec1e34be76e7ef2a4235d248b7c44d24 /src/lib/libcrypto/objects/obj_dat.c
parente131d25072e3d4197ba4b9bcc0d1b27d34d6488d (diff)
downloadopenbsd-9200bb13d15da4b2a23e6bc92c20e95b74aa2113.tar.gz
openbsd-9200bb13d15da4b2a23e6bc92c20e95b74aa2113.tar.bz2
openbsd-9200bb13d15da4b2a23e6bc92c20e95b74aa2113.zip
openssl-engine-0.9.6 merge
Diffstat (limited to 'src/lib/libcrypto/objects/obj_dat.c')
-rw-r--r--src/lib/libcrypto/objects/obj_dat.c64
1 files changed, 36 insertions, 28 deletions
diff --git a/src/lib/libcrypto/objects/obj_dat.c b/src/lib/libcrypto/objects/obj_dat.c
index da6df3762a..4b1bb9583a 100644
--- a/src/lib/libcrypto/objects/obj_dat.c
+++ b/src/lib/libcrypto/objects/obj_dat.c
@@ -79,9 +79,9 @@ static ASN1_OBJECT *ln_objs[1];
79static ASN1_OBJECT *obj_objs[1]; 79static ASN1_OBJECT *obj_objs[1];
80#endif 80#endif
81 81
82static int sn_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b); 82static int sn_cmp(const void *a, const void *b);
83static int ln_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b); 83static int ln_cmp(const void *a, const void *b);
84static int obj_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b); 84static int obj_cmp(const void *a, const void *b);
85#define ADDED_DATA 0 85#define ADDED_DATA 0
86#define ADDED_SNAME 1 86#define ADDED_SNAME 1
87#define ADDED_LNAME 2 87#define ADDED_LNAME 2
@@ -96,11 +96,17 @@ typedef struct added_obj_st
96static int new_nid=NUM_NID; 96static int new_nid=NUM_NID;
97static LHASH *added=NULL; 97static LHASH *added=NULL;
98 98
99static int sn_cmp(ASN1_OBJECT **ap, ASN1_OBJECT **bp) 99static int sn_cmp(const void *a, const void *b)
100 { return(strcmp((*ap)->sn,(*bp)->sn)); } 100 {
101 const ASN1_OBJECT * const *ap = a, * const *bp = b;
102 return(strcmp((*ap)->sn,(*bp)->sn));
103 }
101 104
102static int ln_cmp(ASN1_OBJECT **ap, ASN1_OBJECT **bp) 105static int ln_cmp(const void *a, const void *b)
103 { return(strcmp((*ap)->ln,(*bp)->ln)); } 106 {
107 const ASN1_OBJECT * const *ap = a, * const *bp = b;
108 return(strcmp((*ap)->ln,(*bp)->ln));
109 }
104 110
105static unsigned long add_hash(ADDED_OBJ *ca) 111static unsigned long add_hash(ADDED_OBJ *ca)
106 { 112 {
@@ -128,7 +134,8 @@ static unsigned long add_hash(ADDED_OBJ *ca)
128 ret=a->nid; 134 ret=a->nid;
129 break; 135 break;
130 default: 136 default:
131 abort(); 137 /* abort(); */
138 return 0;
132 } 139 }
133 ret&=0x3fffffffL; 140 ret&=0x3fffffffL;
134 ret|=ca->type<<30L; 141 ret|=ca->type<<30L;
@@ -161,7 +168,8 @@ static int add_cmp(ADDED_OBJ *ca, ADDED_OBJ *cb)
161 case ADDED_NID: 168 case ADDED_NID:
162 return(a->nid-b->nid); 169 return(a->nid-b->nid);
163 default: 170 default:
164 abort(); 171 /* abort(); */
172 return 0;
165 } 173 }
166 return(1); /* should not get here */ 174 return(1); /* should not get here */
167 } 175 }
@@ -188,7 +196,7 @@ static void cleanup3(ADDED_OBJ *a)
188 { 196 {
189 if (--a->obj->nid == 0) 197 if (--a->obj->nid == 0)
190 ASN1_OBJECT_free(a->obj); 198 ASN1_OBJECT_free(a->obj);
191 Free(a); 199 OPENSSL_free(a);
192 } 200 }
193 201
194void OBJ_cleanup(void) 202void OBJ_cleanup(void)
@@ -220,13 +228,13 @@ int OBJ_add_object(ASN1_OBJECT *obj)
220 if (added == NULL) 228 if (added == NULL)
221 if (!init_added()) return(0); 229 if (!init_added()) return(0);
222 if ((o=OBJ_dup(obj)) == NULL) goto err; 230 if ((o=OBJ_dup(obj)) == NULL) goto err;
223 ao[ADDED_NID]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ)); 231 ao[ADDED_NID]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ));
224 if ((o->length != 0) && (obj->data != NULL)) 232 if ((o->length != 0) && (obj->data != NULL))
225 ao[ADDED_DATA]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ)); 233 ao[ADDED_DATA]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ));
226 if (o->sn != NULL) 234 if (o->sn != NULL)
227 ao[ADDED_SNAME]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ)); 235 ao[ADDED_SNAME]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ));
228 if (o->ln != NULL) 236 if (o->ln != NULL)
229 ao[ADDED_LNAME]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ)); 237 ao[ADDED_LNAME]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ));
230 238
231 for (i=ADDED_DATA; i<=ADDED_NID; i++) 239 for (i=ADDED_DATA; i<=ADDED_NID; i++)
232 { 240 {
@@ -237,7 +245,7 @@ int OBJ_add_object(ASN1_OBJECT *obj)
237 aop=(ADDED_OBJ *)lh_insert(added,ao[i]); 245 aop=(ADDED_OBJ *)lh_insert(added,ao[i]);
238 /* memory leak, buit should not normally matter */ 246 /* memory leak, buit should not normally matter */
239 if (aop != NULL) 247 if (aop != NULL)
240 Free(aop); 248 OPENSSL_free(aop);
241 } 249 }
242 } 250 }
243 o->flags&= ~(ASN1_OBJECT_FLAG_DYNAMIC|ASN1_OBJECT_FLAG_DYNAMIC_STRINGS| 251 o->flags&= ~(ASN1_OBJECT_FLAG_DYNAMIC|ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|
@@ -246,8 +254,8 @@ int OBJ_add_object(ASN1_OBJECT *obj)
246 return(o->nid); 254 return(o->nid);
247err: 255err:
248 for (i=ADDED_DATA; i<=ADDED_NID; i++) 256 for (i=ADDED_DATA; i<=ADDED_NID; i++)
249 if (ao[i] != NULL) Free(ao[i]); 257 if (ao[i] != NULL) OPENSSL_free(ao[i]);
250 if (o != NULL) Free(o); 258 if (o != NULL) OPENSSL_free(o);
251 return(NID_undef); 259 return(NID_undef);
252 } 260 }
253 261
@@ -365,7 +373,7 @@ int OBJ_obj2nid(ASN1_OBJECT *a)
365 if (adp != NULL) return (adp->obj->nid); 373 if (adp != NULL) return (adp->obj->nid);
366 } 374 }
367 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&a,(char *)obj_objs,NUM_OBJ, 375 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&a,(char *)obj_objs,NUM_OBJ,
368 sizeof(ASN1_OBJECT *),(int (*)())obj_cmp); 376 sizeof(ASN1_OBJECT *),obj_cmp);
369 if (op == NULL) 377 if (op == NULL)
370 return(NID_undef); 378 return(NID_undef);
371 return((*op)->nid); 379 return((*op)->nid);
@@ -400,7 +408,7 @@ ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name)
400 /* Work out total size */ 408 /* Work out total size */
401 j = ASN1_object_size(0,i,V_ASN1_OBJECT); 409 j = ASN1_object_size(0,i,V_ASN1_OBJECT);
402 410
403 if((buf=(unsigned char *)Malloc(j)) == NULL) return NULL; 411 if((buf=(unsigned char *)OPENSSL_malloc(j)) == NULL) return NULL;
404 412
405 p = buf; 413 p = buf;
406 /* Write out tag+length */ 414 /* Write out tag+length */
@@ -410,7 +418,7 @@ ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name)
410 418
411 p=buf; 419 p=buf;
412 op=d2i_ASN1_OBJECT(NULL,&p,i); 420 op=d2i_ASN1_OBJECT(NULL,&p,i);
413 Free(buf); 421 OPENSSL_free(buf);
414 return op; 422 return op;
415 } 423 }
416 424
@@ -504,7 +512,7 @@ int OBJ_ln2nid(const char *s)
504 if (adp != NULL) return (adp->obj->nid); 512 if (adp != NULL) return (adp->obj->nid);
505 } 513 }
506 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)ln_objs,NUM_LN, 514 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)ln_objs,NUM_LN,
507 sizeof(ASN1_OBJECT *),(int (*)())ln_cmp); 515 sizeof(ASN1_OBJECT *),ln_cmp);
508 if (op == NULL) return(NID_undef); 516 if (op == NULL) return(NID_undef);
509 return((*op)->nid); 517 return((*op)->nid);
510 } 518 }
@@ -523,23 +531,23 @@ int OBJ_sn2nid(const char *s)
523 if (adp != NULL) return (adp->obj->nid); 531 if (adp != NULL) return (adp->obj->nid);
524 } 532 }
525 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)sn_objs,NUM_SN, 533 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)sn_objs,NUM_SN,
526 sizeof(ASN1_OBJECT *),(int (*)())sn_cmp); 534 sizeof(ASN1_OBJECT *),sn_cmp);
527 if (op == NULL) return(NID_undef); 535 if (op == NULL) return(NID_undef);
528 return((*op)->nid); 536 return((*op)->nid);
529 } 537 }
530 538
531static int obj_cmp(ASN1_OBJECT **ap, ASN1_OBJECT **bp) 539static int obj_cmp(const void *ap, const void *bp)
532 { 540 {
533 int j; 541 int j;
534 ASN1_OBJECT *a= *ap; 542 ASN1_OBJECT *a= *(ASN1_OBJECT **)ap;
535 ASN1_OBJECT *b= *bp; 543 ASN1_OBJECT *b= *(ASN1_OBJECT **)bp;
536 544
537 j=(a->length - b->length); 545 j=(a->length - b->length);
538 if (j) return(j); 546 if (j) return(j);
539 return(memcmp(a->data,b->data,a->length)); 547 return(memcmp(a->data,b->data,a->length));
540 } 548 }
541 549
542char *OBJ_bsearch(char *key, char *base, int num, int size, int (*cmp)()) 550char *OBJ_bsearch(char *key, char *base, int num, int size, int (*cmp)(const void *, const void *))
543 { 551 {
544 int l,h,i,c; 552 int l,h,i,c;
545 char *p; 553 char *p;
@@ -631,7 +639,7 @@ int OBJ_create(char *oid, char *sn, char *ln)
631 i=a2d_ASN1_OBJECT(NULL,0,oid,-1); 639 i=a2d_ASN1_OBJECT(NULL,0,oid,-1);
632 if (i <= 0) return(0); 640 if (i <= 0) return(0);
633 641
634 if ((buf=(unsigned char *)Malloc(i)) == NULL) 642 if ((buf=(unsigned char *)OPENSSL_malloc(i)) == NULL)
635 { 643 {
636 OBJerr(OBJ_F_OBJ_CREATE,OBJ_R_MALLOC_FAILURE); 644 OBJerr(OBJ_F_OBJ_CREATE,OBJ_R_MALLOC_FAILURE);
637 return(0); 645 return(0);
@@ -643,7 +651,7 @@ int OBJ_create(char *oid, char *sn, char *ln)
643 ok=OBJ_add_object(op); 651 ok=OBJ_add_object(op);
644err: 652err:
645 ASN1_OBJECT_free(op); 653 ASN1_OBJECT_free(op);
646 Free(buf); 654 OPENSSL_free(buf);
647 return(ok); 655 return(ok);
648 } 656 }
649 657