diff options
Diffstat (limited to 'src/lib/libcrypto/objects/obj_dat.c')
| -rw-r--r-- | src/lib/libcrypto/objects/obj_dat.c | 64 |
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]; | |||
| 79 | static ASN1_OBJECT *obj_objs[1]; | 79 | static ASN1_OBJECT *obj_objs[1]; |
| 80 | #endif | 80 | #endif |
| 81 | 81 | ||
| 82 | static int sn_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b); | 82 | static int sn_cmp(const void *a, const void *b); |
| 83 | static int ln_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b); | 83 | static int ln_cmp(const void *a, const void *b); |
| 84 | static int obj_cmp(ASN1_OBJECT **a, ASN1_OBJECT **b); | 84 | static 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 | |||
| 96 | static int new_nid=NUM_NID; | 96 | static int new_nid=NUM_NID; |
| 97 | static LHASH *added=NULL; | 97 | static LHASH *added=NULL; |
| 98 | 98 | ||
| 99 | static int sn_cmp(ASN1_OBJECT **ap, ASN1_OBJECT **bp) | 99 | static 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 | ||
| 102 | static int ln_cmp(ASN1_OBJECT **ap, ASN1_OBJECT **bp) | 105 | static 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 | ||
| 105 | static unsigned long add_hash(ADDED_OBJ *ca) | 111 | static 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 | ||
| 194 | void OBJ_cleanup(void) | 202 | void 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); |
| 247 | err: | 255 | err: |
| 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 | ||
| 531 | static int obj_cmp(ASN1_OBJECT **ap, ASN1_OBJECT **bp) | 539 | static 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 | ||
| 542 | char *OBJ_bsearch(char *key, char *base, int num, int size, int (*cmp)()) | 550 | char *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); |
| 644 | err: | 652 | err: |
| 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 | ||
