From 86827fc63e94997b1c5f2e9e966962473acc9694 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 27 Mar 2009 19:36:24 +0100 Subject: tag_pool: use memcmp() instead of strcmp() for non-terminated string The strings passed to tag_pool_get_item() are not null-terminated, and the caller passes the string length. Don't assume it is null-terminated anyway by using strcmp(). --- src/tag_pool.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/tag_pool.c b/src/tag_pool.c index fb59669e6..6aef12941 100644 --- a/src/tag_pool.c +++ b/src/tag_pool.c @@ -101,7 +101,9 @@ tag_pool_get_item(enum tag_type type, const char *value, size_t length) slot_p = &slots[calc_hash_n(type, value, length) % NUM_SLOTS]; for (slot = *slot_p; slot != NULL; slot = slot->next) { if (slot->item.type == type && - strcmp(value, slot->item.value) == 0 && slot->ref < 0xff) { + length == strlen(slot->item.value) && + memcmp(value, slot->item.value, length) == 0 && + slot->ref < 0xff) { assert(slot->ref > 0); ++slot->ref; return &slot->item; -- cgit v1.2.3