Optimize ossl_namemap_name2num_n to avoid strndup

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26870)
This commit is contained in:
Andrew Dinh 2025-02-21 23:55:58 +07:00 committed by Neil Horman
parent 18f2091ad1
commit 054f6c0fc1
2 changed files with 39 additions and 7 deletions

View file

@ -139,6 +139,26 @@ memset((key), 0, sizeof(*(key))); \
ossl_ht_strcase((key)->keyfields.member, value, sizeof((key)->keyfields.member) -1); \
} while(0)
/*
* Same as HT_SET_KEY_STRING but also takes length of the string.
*/
#define HT_SET_KEY_STRING_N(key, member, value, len) do { \
if ((value) != NULL) { \
if (len < sizeof((key)->keyfields.member)) \
strncpy((key)->keyfields.member, value, len); \
else \
strncpy((key)->keyfields.member, value, sizeof((key)->keyfields.member) - 1); \
} \
} while(0)
/* Same as HT_SET_KEY_STRING_CASE but also takes length of the string. */
#define HT_SET_KEY_STRING_CASE_N(key, member, value, len) do { \
if (len < sizeof((key)->keyfields.member)) \
ossl_ht_strcase((key)->keyfields.member, value, len); \
else \
ossl_ht_strcase((key)->keyfields.member, value, sizeof((key)->keyfields.member) - 1); \
} while(0)
/*
* Sets a uint8_t (blob) field in a hash table key
*/