mirror of
https://github.com/openssl/openssl.git
synced 2026-05-07 20:12:39 +00:00
Allow core_namemap to limit hashtable key sizes
Now that we can dynamically size keys for our hashtable, take advantage of that in core_namemap. Reviewed-by: Saša Nedvědický <sashan@openssl.org> Reviewed-by: Paul Dale <paul.dale@oracle.com> Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org> MergeDate: Tue Mar 3 13:23:03 2026 (Merged from https://github.com/openssl/openssl/pull/30211)
This commit is contained in:
+12
-7
@@ -16,8 +16,9 @@
|
||||
|
||||
#define NAMEMAP_HT_BUCKETS 512
|
||||
|
||||
#define NAMEMAP_NAME_LEN 64
|
||||
HT_START_KEY_DEFN(namenum_key)
|
||||
HT_DEF_KEY_FIELD_CHAR_ARRAY(name, 64)
|
||||
HT_DEF_KEY_FIELD_CHAR_ARRAY(name, NAMEMAP_NAME_LEN)
|
||||
HT_END_KEY_DEFN(NAMENUM_KEY)
|
||||
|
||||
/*-
|
||||
@@ -152,8 +153,8 @@ int ossl_namemap_name2num(const OSSL_NAMEMAP *namemap, const char *name)
|
||||
if (namemap == NULL)
|
||||
return 0;
|
||||
|
||||
HT_INIT_KEY(&key);
|
||||
HT_SET_KEY_STRING_CASE(&key, name, name);
|
||||
HT_INIT_RAW_KEY(&key);
|
||||
HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, (int)strlen(name));
|
||||
|
||||
val = ossl_ht_get(namemap->namenum_ht, TO_HT_KEY(&key));
|
||||
|
||||
@@ -179,8 +180,11 @@ int ossl_namemap_name2num_n(const OSSL_NAMEMAP *namemap,
|
||||
if (namemap == NULL)
|
||||
return 0;
|
||||
|
||||
HT_INIT_KEY(&key);
|
||||
HT_SET_KEY_STRING_CASE_N(&key, name, name, (int)name_len);
|
||||
if (name_len > NAMEMAP_NAME_LEN)
|
||||
name_len = NAMEMAP_NAME_LEN;
|
||||
|
||||
HT_INIT_RAW_KEY(&key);
|
||||
HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, (int)name_len);
|
||||
|
||||
val = ossl_ht_get(namemap->namenum_ht, TO_HT_KEY(&key));
|
||||
|
||||
@@ -271,8 +275,9 @@ static int namemap_add_name(OSSL_NAMEMAP *namemap, int number,
|
||||
/* Using tsan_store alone here is safe since we're under lock */
|
||||
tsan_store(&namemap->max_number, number);
|
||||
|
||||
HT_INIT_KEY(&key);
|
||||
HT_SET_KEY_STRING_CASE(&key, name, name);
|
||||
HT_INIT_RAW_KEY(&key);
|
||||
HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, (int)strlen(name));
|
||||
|
||||
val.value = (void *)(intptr_t)number;
|
||||
ret = ossl_ht_insert(namemap->namenum_ht, TO_HT_KEY(&key), &val, NULL);
|
||||
if (ret <= 0) {
|
||||
|
||||
Reference in New Issue
Block a user