From f02886ccdace34ef98865195337881e79fe9c6f2 Mon Sep 17 00:00:00 2001 From: suwanghw Date: Tue, 2 Jul 2024 17:30:22 +0800 Subject: [PATCH] Add empty string validation when getting items Signed-off-by: suwanghw --- lib/teelib/libteeos/src/tee/tee_property_api.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/teelib/libteeos/src/tee/tee_property_api.c b/lib/teelib/libteeos/src/tee/tee_property_api.c index ae36f14b..4c73feb6 100644 --- a/lib/teelib/libteeos/src/tee/tee_property_api.c +++ b/lib/teelib/libteeos/src/tee/tee_property_api.c @@ -422,7 +422,8 @@ static struct prop_item *find_pseuprop_item(TEE_PropSetHandle set, const char *n if (name == NULL) return NULL; - if (strnlen(name, MAX_PROPERTY_NAME_LEN) >= MAX_PROPERTY_NAME_LEN) + if (strnlen(name, MAX_PROPERTY_NAME_LEN) >= MAX_PROPERTY_NAME_LEN || + strnlen(name, MAX_PROPERTY_NAME_LEN) == 0) return NULL; uint32_t index = sel_prop_set(set); @@ -1167,9 +1168,10 @@ TEE_Result TEE_GetPropertyName(TEE_PropSetHandle enumerator, void *nameBuffer, s } check = ((handle->set == TEE_PROPSET_UNKNOW) || (handle->item == NULL) || (handle->item->name == NULL) || - (strnlen(handle->item->name, MAX_PROPERTY_NAME_LEN) >= MAX_PROPERTY_NAME_LEN)); + (strnlen(handle->item->name, MAX_PROPERTY_NAME_LEN) >= MAX_PROPERTY_NAME_LEN) || + (strnlen(handle->item->name, MAX_PROPERTY_NAME_LEN) == 0)); if (check) { - tloge("item no found\n"); + tloge("item no found or name invalid\n"); return TEE_ERROR_ITEM_NOT_FOUND; } @@ -1207,6 +1209,10 @@ TEE_Result TEE_GetNextProperty(TEE_PropSetHandle enumerator) } handle->item = dlist_entry(handle->item->list.next, struct prop_item, list); + if (strcmp(handle->item->name, "") == 0) { + tloge("next name is 0, error"); + return TEE_ERROR_ITEM_NOT_FOUND; + } return TEE_SUCCESS; }