OpenSSL 1.1.1-pre2
This commit is contained in:
+60
-61
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "internal/ctype.h"
|
||||
#include <limits.h>
|
||||
#include "internal/cryptlib.h"
|
||||
#include <openssl/lhash.h>
|
||||
@@ -40,14 +40,14 @@ static LHASH_OF(ADDED_OBJ) *added = NULL;
|
||||
|
||||
static int sn_cmp(const ASN1_OBJECT *const *a, const unsigned int *b)
|
||||
{
|
||||
return (strcmp((*a)->sn, nid_objs[*b].sn));
|
||||
return strcmp((*a)->sn, nid_objs[*b].sn);
|
||||
}
|
||||
|
||||
IMPLEMENT_OBJ_BSEARCH_CMP_FN(const ASN1_OBJECT *, unsigned int, sn);
|
||||
|
||||
static int ln_cmp(const ASN1_OBJECT *const *a, const unsigned int *b)
|
||||
{
|
||||
return (strcmp((*a)->ln, nid_objs[*b].ln));
|
||||
return strcmp((*a)->ln, nid_objs[*b].ln);
|
||||
}
|
||||
|
||||
IMPLEMENT_OBJ_BSEARCH_CMP_FN(const ASN1_OBJECT *, unsigned int, ln);
|
||||
@@ -82,7 +82,7 @@ static unsigned long added_obj_hash(const ADDED_OBJ *ca)
|
||||
}
|
||||
ret &= 0x3fffffffL;
|
||||
ret |= ((unsigned long)ca->type) << 30L;
|
||||
return (ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int added_obj_cmp(const ADDED_OBJ *ca, const ADDED_OBJ *cb)
|
||||
@@ -92,31 +92,31 @@ static int added_obj_cmp(const ADDED_OBJ *ca, const ADDED_OBJ *cb)
|
||||
|
||||
i = ca->type - cb->type;
|
||||
if (i)
|
||||
return (i);
|
||||
return i;
|
||||
a = ca->obj;
|
||||
b = cb->obj;
|
||||
switch (ca->type) {
|
||||
case ADDED_DATA:
|
||||
i = (a->length - b->length);
|
||||
if (i)
|
||||
return (i);
|
||||
return (memcmp(a->data, b->data, (size_t)a->length));
|
||||
return i;
|
||||
return memcmp(a->data, b->data, (size_t)a->length);
|
||||
case ADDED_SNAME:
|
||||
if (a->sn == NULL)
|
||||
return (-1);
|
||||
return -1;
|
||||
else if (b->sn == NULL)
|
||||
return (1);
|
||||
return 1;
|
||||
else
|
||||
return (strcmp(a->sn, b->sn));
|
||||
return strcmp(a->sn, b->sn);
|
||||
case ADDED_LNAME:
|
||||
if (a->ln == NULL)
|
||||
return (-1);
|
||||
return -1;
|
||||
else if (b->ln == NULL)
|
||||
return (1);
|
||||
return 1;
|
||||
else
|
||||
return (strcmp(a->ln, b->ln));
|
||||
return strcmp(a->ln, b->ln);
|
||||
case ADDED_NID:
|
||||
return (a->nid - b->nid);
|
||||
return a->nid - b->nid;
|
||||
default:
|
||||
/* abort(); */
|
||||
return 0;
|
||||
@@ -126,9 +126,9 @@ static int added_obj_cmp(const ADDED_OBJ *ca, const ADDED_OBJ *cb)
|
||||
static int init_added(void)
|
||||
{
|
||||
if (added != NULL)
|
||||
return (1);
|
||||
return 1;
|
||||
added = lh_ADDED_OBJ_new(added_obj_hash, added_obj_cmp);
|
||||
return (added != NULL);
|
||||
return added != NULL;
|
||||
}
|
||||
|
||||
static void cleanup1_doall(ADDED_OBJ *a)
|
||||
@@ -168,7 +168,7 @@ int OBJ_new_nid(int num)
|
||||
|
||||
i = new_nid;
|
||||
new_nid += num;
|
||||
return (i);
|
||||
return i;
|
||||
}
|
||||
|
||||
int OBJ_add_object(const ASN1_OBJECT *obj)
|
||||
@@ -179,7 +179,7 @@ int OBJ_add_object(const ASN1_OBJECT *obj)
|
||||
|
||||
if (added == NULL)
|
||||
if (!init_added())
|
||||
return (0);
|
||||
return 0;
|
||||
if ((o = OBJ_dup(obj)) == NULL)
|
||||
goto err;
|
||||
if ((ao[ADDED_NID] = OPENSSL_malloc(sizeof(*ao[0]))) == NULL)
|
||||
@@ -207,13 +207,13 @@ int OBJ_add_object(const ASN1_OBJECT *obj)
|
||||
~(ASN1_OBJECT_FLAG_DYNAMIC | ASN1_OBJECT_FLAG_DYNAMIC_STRINGS |
|
||||
ASN1_OBJECT_FLAG_DYNAMIC_DATA);
|
||||
|
||||
return (o->nid);
|
||||
return o->nid;
|
||||
err2:
|
||||
OBJerr(OBJ_F_OBJ_ADD_OBJECT, ERR_R_MALLOC_FAILURE);
|
||||
err:
|
||||
for (i = ADDED_DATA; i <= ADDED_NID; i++)
|
||||
OPENSSL_free(ao[i]);
|
||||
ASN1_OBJECT_free(o);
|
||||
OPENSSL_free(o);
|
||||
return NID_undef;
|
||||
}
|
||||
|
||||
@@ -225,21 +225,21 @@ ASN1_OBJECT *OBJ_nid2obj(int n)
|
||||
if ((n >= 0) && (n < NUM_NID)) {
|
||||
if ((n != NID_undef) && (nid_objs[n].nid == NID_undef)) {
|
||||
OBJerr(OBJ_F_OBJ_NID2OBJ, OBJ_R_UNKNOWN_NID);
|
||||
return (NULL);
|
||||
return NULL;
|
||||
}
|
||||
return ((ASN1_OBJECT *)&(nid_objs[n]));
|
||||
return (ASN1_OBJECT *)&(nid_objs[n]);
|
||||
} else if (added == NULL)
|
||||
return (NULL);
|
||||
return NULL;
|
||||
else {
|
||||
ad.type = ADDED_NID;
|
||||
ad.obj = &ob;
|
||||
ob.nid = n;
|
||||
adp = lh_ADDED_OBJ_retrieve(added, &ad);
|
||||
if (adp != NULL)
|
||||
return (adp->obj);
|
||||
return adp->obj;
|
||||
else {
|
||||
OBJerr(OBJ_F_OBJ_NID2OBJ, OBJ_R_UNKNOWN_NID);
|
||||
return (NULL);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -252,21 +252,21 @@ const char *OBJ_nid2sn(int n)
|
||||
if ((n >= 0) && (n < NUM_NID)) {
|
||||
if ((n != NID_undef) && (nid_objs[n].nid == NID_undef)) {
|
||||
OBJerr(OBJ_F_OBJ_NID2SN, OBJ_R_UNKNOWN_NID);
|
||||
return (NULL);
|
||||
return NULL;
|
||||
}
|
||||
return (nid_objs[n].sn);
|
||||
return nid_objs[n].sn;
|
||||
} else if (added == NULL)
|
||||
return (NULL);
|
||||
return NULL;
|
||||
else {
|
||||
ad.type = ADDED_NID;
|
||||
ad.obj = &ob;
|
||||
ob.nid = n;
|
||||
adp = lh_ADDED_OBJ_retrieve(added, &ad);
|
||||
if (adp != NULL)
|
||||
return (adp->obj->sn);
|
||||
return adp->obj->sn;
|
||||
else {
|
||||
OBJerr(OBJ_F_OBJ_NID2SN, OBJ_R_UNKNOWN_NID);
|
||||
return (NULL);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -279,21 +279,21 @@ const char *OBJ_nid2ln(int n)
|
||||
if ((n >= 0) && (n < NUM_NID)) {
|
||||
if ((n != NID_undef) && (nid_objs[n].nid == NID_undef)) {
|
||||
OBJerr(OBJ_F_OBJ_NID2LN, OBJ_R_UNKNOWN_NID);
|
||||
return (NULL);
|
||||
return NULL;
|
||||
}
|
||||
return (nid_objs[n].ln);
|
||||
return nid_objs[n].ln;
|
||||
} else if (added == NULL)
|
||||
return (NULL);
|
||||
return NULL;
|
||||
else {
|
||||
ad.type = ADDED_NID;
|
||||
ad.obj = &ob;
|
||||
ob.nid = n;
|
||||
adp = lh_ADDED_OBJ_retrieve(added, &ad);
|
||||
if (adp != NULL)
|
||||
return (adp->obj->ln);
|
||||
return adp->obj->ln;
|
||||
else {
|
||||
OBJerr(OBJ_F_OBJ_NID2LN, OBJ_R_UNKNOWN_NID);
|
||||
return (NULL);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -306,10 +306,10 @@ static int obj_cmp(const ASN1_OBJECT *const *ap, const unsigned int *bp)
|
||||
|
||||
j = (a->length - b->length);
|
||||
if (j)
|
||||
return (j);
|
||||
return j;
|
||||
if (a->length == 0)
|
||||
return 0;
|
||||
return (memcmp(a->data, b->data, a->length));
|
||||
return memcmp(a->data, b->data, a->length);
|
||||
}
|
||||
|
||||
IMPLEMENT_OBJ_BSEARCH_CMP_FN(const ASN1_OBJECT *, unsigned int, obj);
|
||||
@@ -320,9 +320,9 @@ int OBJ_obj2nid(const ASN1_OBJECT *a)
|
||||
ADDED_OBJ ad, *adp;
|
||||
|
||||
if (a == NULL)
|
||||
return (NID_undef);
|
||||
return NID_undef;
|
||||
if (a->nid != 0)
|
||||
return (a->nid);
|
||||
return a->nid;
|
||||
|
||||
if (a->length == 0)
|
||||
return NID_undef;
|
||||
@@ -332,12 +332,12 @@ int OBJ_obj2nid(const ASN1_OBJECT *a)
|
||||
ad.obj = (ASN1_OBJECT *)a; /* XXX: ugly but harmless */
|
||||
adp = lh_ADDED_OBJ_retrieve(added, &ad);
|
||||
if (adp != NULL)
|
||||
return (adp->obj->nid);
|
||||
return adp->obj->nid;
|
||||
}
|
||||
op = OBJ_bsearch_obj(&a, obj_objs, NUM_OBJ);
|
||||
if (op == NULL)
|
||||
return (NID_undef);
|
||||
return (nid_objs[*op].nid);
|
||||
return NID_undef;
|
||||
return nid_objs[*op].nid;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -404,7 +404,7 @@ int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name)
|
||||
buf[0] = '\0';
|
||||
|
||||
if ((a == NULL) || (a->data == NULL))
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
if (!no_name && (nid = OBJ_obj2nid(a)) != NID_undef) {
|
||||
const char *s;
|
||||
@@ -548,12 +548,12 @@ int OBJ_ln2nid(const char *s)
|
||||
ad.obj = &o;
|
||||
adp = lh_ADDED_OBJ_retrieve(added, &ad);
|
||||
if (adp != NULL)
|
||||
return (adp->obj->nid);
|
||||
return adp->obj->nid;
|
||||
}
|
||||
op = OBJ_bsearch_ln(&oo, ln_objs, NUM_LN);
|
||||
if (op == NULL)
|
||||
return (NID_undef);
|
||||
return (nid_objs[*op].nid);
|
||||
return NID_undef;
|
||||
return nid_objs[*op].nid;
|
||||
}
|
||||
|
||||
int OBJ_sn2nid(const char *s)
|
||||
@@ -569,12 +569,12 @@ int OBJ_sn2nid(const char *s)
|
||||
ad.obj = &o;
|
||||
adp = lh_ADDED_OBJ_retrieve(added, &ad);
|
||||
if (adp != NULL)
|
||||
return (adp->obj->nid);
|
||||
return adp->obj->nid;
|
||||
}
|
||||
op = OBJ_bsearch_sn(&oo, sn_objs, NUM_SN);
|
||||
if (op == NULL)
|
||||
return (NID_undef);
|
||||
return (nid_objs[*op].nid);
|
||||
return NID_undef;
|
||||
return nid_objs[*op].nid;
|
||||
}
|
||||
|
||||
const void *OBJ_bsearch_(const void *key, const void *base, int num, int size,
|
||||
@@ -593,7 +593,7 @@ const void *OBJ_bsearch_ex_(const void *key, const void *base_, int num,
|
||||
const char *p = NULL;
|
||||
|
||||
if (num == 0)
|
||||
return (NULL);
|
||||
return NULL;
|
||||
l = 0;
|
||||
h = num;
|
||||
while (l < h) {
|
||||
@@ -629,7 +629,7 @@ const void *OBJ_bsearch_ex_(const void *key, const void *base_, int num,
|
||||
i--;
|
||||
p = &(base[i * size]);
|
||||
}
|
||||
return (p);
|
||||
return p;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -646,26 +646,26 @@ int OBJ_create_objects(BIO *in)
|
||||
s = o = NULL;
|
||||
i = BIO_gets(in, buf, 512);
|
||||
if (i <= 0)
|
||||
return (num);
|
||||
return num;
|
||||
buf[i - 1] = '\0';
|
||||
if (!isalnum((unsigned char)buf[0]))
|
||||
return (num);
|
||||
if (!ossl_isalnum(buf[0]))
|
||||
return num;
|
||||
o = s = buf;
|
||||
while (isdigit((unsigned char)*s) || (*s == '.'))
|
||||
while (ossl_isdigit(*s) || *s == '.')
|
||||
s++;
|
||||
if (*s != '\0') {
|
||||
*(s++) = '\0';
|
||||
while (isspace((unsigned char)*s))
|
||||
while (ossl_isspace(*s))
|
||||
s++;
|
||||
if (*s == '\0') {
|
||||
s = NULL;
|
||||
} else {
|
||||
l = s;
|
||||
while ((*l != '\0') && !isspace((unsigned char)*l))
|
||||
while (*l != '\0' && !ossl_isspace(*l))
|
||||
l++;
|
||||
if (*l != '\0') {
|
||||
*(l++) = '\0';
|
||||
while (isspace((unsigned char)*l))
|
||||
while (ossl_isspace(*l))
|
||||
l++;
|
||||
if (*l == '\0') {
|
||||
l = NULL;
|
||||
@@ -680,10 +680,9 @@ int OBJ_create_objects(BIO *in)
|
||||
if (*o == '\0')
|
||||
return num;
|
||||
if (!OBJ_create(o, s, l))
|
||||
return (num);
|
||||
return num;
|
||||
num++;
|
||||
}
|
||||
/* return(num); */
|
||||
}
|
||||
|
||||
int OBJ_create(const char *oid, const char *sn, const char *ln)
|
||||
|
||||
Reference in New Issue
Block a user