mirror of
https://github.com/AntelopeIO/boringssl.git
synced 2026-07-21 14:43:53 +00:00
Deduplicate the three copies of OBJ_cmp
While I'm here, align on the version that compares the lengths explicitly, rather than subtract. The subtraction trick does actually work, because the lengths can't be negative and we're two's complement (so 0 - INT_MAX fits in int). But just comparing avoids needing to think about it. Change-Id: Ide6e3539a27e187bb1a405600c367bb8dd82197e Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/62545 Reviewed-by: Bob Beck <bbe@google.com> Commit-Queue: David Benjamin <davidben@google.com> Auto-Submit: David Benjamin <davidben@google.com>
This commit is contained in:
committed by
Boringssl LUCI CQ
parent
09096a98f3
commit
5d2a41d869
+6
-23
@@ -159,11 +159,10 @@ err:
|
||||
}
|
||||
|
||||
int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b) {
|
||||
int ret;
|
||||
|
||||
ret = a->length - b->length;
|
||||
if (ret) {
|
||||
return ret;
|
||||
if (a->length < b->length) {
|
||||
return -1;
|
||||
} else if (a->length > b->length) {
|
||||
return 1;
|
||||
}
|
||||
return OPENSSL_memcmp(a->data, b->data, a->length);
|
||||
}
|
||||
@@ -189,15 +188,7 @@ size_t OBJ_length(const ASN1_OBJECT *obj) {
|
||||
// unsigned int in the array.
|
||||
static int obj_cmp(const void *key, const void *element) {
|
||||
uint16_t nid = *((const uint16_t *)element);
|
||||
const ASN1_OBJECT *a = key;
|
||||
const ASN1_OBJECT *b = &kObjects[nid];
|
||||
|
||||
if (a->length < b->length) {
|
||||
return -1;
|
||||
} else if (a->length > b->length) {
|
||||
return 1;
|
||||
}
|
||||
return OPENSSL_memcmp(a->data, b->data, a->length);
|
||||
return OBJ_cmp(key, &kObjects[nid]);
|
||||
}
|
||||
|
||||
int OBJ_obj2nid(const ASN1_OBJECT *obj) {
|
||||
@@ -474,14 +465,6 @@ static uint32_t hash_data(const ASN1_OBJECT *obj) {
|
||||
return OPENSSL_hash32(obj->data, obj->length);
|
||||
}
|
||||
|
||||
static int cmp_data(const ASN1_OBJECT *a, const ASN1_OBJECT *b) {
|
||||
int i = a->length - b->length;
|
||||
if (i) {
|
||||
return i;
|
||||
}
|
||||
return OPENSSL_memcmp(a->data, b->data, a->length);
|
||||
}
|
||||
|
||||
static uint32_t hash_short_name(const ASN1_OBJECT *obj) {
|
||||
return OPENSSL_strhash(obj->sn);
|
||||
}
|
||||
@@ -509,7 +492,7 @@ static int obj_add_object(ASN1_OBJECT *obj) {
|
||||
global_added_by_nid = lh_ASN1_OBJECT_new(hash_nid, cmp_nid);
|
||||
}
|
||||
if (global_added_by_data == NULL) {
|
||||
global_added_by_data = lh_ASN1_OBJECT_new(hash_data, cmp_data);
|
||||
global_added_by_data = lh_ASN1_OBJECT_new(hash_data, OBJ_cmp);
|
||||
}
|
||||
if (global_added_by_short_name == NULL) {
|
||||
global_added_by_short_name =
|
||||
|
||||
Reference in New Issue
Block a user