return 0;
HT_INIT_RAW_KEY(&key);
- HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, (int)strlen(name));
+ HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, strlen(name));
val = ossl_ht_get(namemap->namenum_ht, TO_HT_KEY(&key));
name_len = NAMEMAP_NAME_LEN;
HT_INIT_RAW_KEY(&key);
- HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, (int)name_len);
+ HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, name_len);
val = ossl_ht_get(namemap->namenum_ht, TO_HT_KEY(&key));
tsan_store(&namemap->max_number, number);
HT_INIT_RAW_KEY(&key);
- HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, (int)strlen(name));
+ HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, strlen(name));
val.value = (void *)(intptr_t)number;
ret = ossl_ht_insert(namemap->namenum_ht, TO_HT_KEY(&key), &val, NULL);
* Similar to HT_COPY_RAW_KEY but accepts a character buffer, and copies
* data while converting case for case insensitive matches
*/
-#define HT_COPY_RAW_KEY_CASE(key, buf, len) \
- do { \
- ossl_ht_strcase((key), (char *)&((key)->keybuf[(key)->keysize]), buf, len); \
- (key)->keysize += len; \
+#define HT_COPY_RAW_KEY_CASE(key, buf, len) \
+ do { \
+ size_t tmplen = (size_t)(len); \
+ if (tmplen > (key)->bufsize - (key)->keysize) \
+ tmplen = (key)->bufsize - (key)->keysize; \
+ ossl_ht_strcase((key), (char *)&((key)->keybuf[(key)->keysize]), buf, tmplen); \
+ (key)->keysize += tmplen; \
} while (0)
/*
/*
* Helper function to construct case insensitive keys
*/
-static ossl_inline ossl_unused void ossl_ht_strcase(HT_KEY *key, char *tgt, const char *src, int len)
+static ossl_inline ossl_unused void ossl_ht_strcase(HT_KEY *key, char *tgt, const char *src, size_t len)
{
- int i;
+ size_t i;
#if defined(CHARSET_EBCDIC) && !defined(CHARSET_EBCDIC_TEST)
const long int case_adjust = ~0x40;
#else
* we copy more space than we have available
*/
if (key != NULL && key->keysize + len > key->bufsize)
- len = (int)(key->bufsize - key->keysize);
+ len = (size_t)(key->bufsize - key->keysize);
for (i = 0; src[i] != '\0' && i < len; i++)
tgt[i] = case_adjust & src[i];