Skip to content

Commit 9d8ede2

Browse files
committed
Fix the incorrect size limitation for string attribute in meta_generic_validation_create (#1663)
1. SAI_HOSTIF_NAME_SIZE only applies to SAI_HOSTIF_ATTR_NAME 2. SAI_HOSTIF_GENETLINK_MCGRP_NAME_SIZE applies to SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME 3. Others apply to chardata size. Signed-off-by: oplklum <[email protected]>
1 parent 8123a98 commit 9d8ede2

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

meta/Meta.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3469,18 +3469,24 @@ sai_status_t Meta::meta_generic_validation_create(
34693469
{
34703470
const char* chardata = value.chardata;
34713471

3472-
size_t len = strnlen(chardata, SAI_HOSTIF_NAME_SIZE);
3472+
// Check the length of host interface name and genetlink multicast group name.
3473+
// Others should be less than the size of chardata.
3474+
size_t limit_len = attr->id == SAI_HOSTIF_ATTR_NAME ? SAI_HOSTIF_NAME_SIZE :
3475+
(attr->id == SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME ? SAI_HOSTIF_GENETLINK_MCGRP_NAME_SIZE :
3476+
sizeof(((sai_attribute_value_t*)nullptr)->chardata));
34733477

3474-
if (len == SAI_HOSTIF_NAME_SIZE)
3478+
size_t len = strnlen(chardata, limit_len);
3479+
3480+
if (len == limit_len)
34753481
{
3476-
META_LOG_ERROR(md, "host interface name is too long");
3482+
META_LOG_ERROR(md, "char data is too long");
34773483

34783484
return SAI_STATUS_INVALID_PARAMETER;
34793485
}
34803486

34813487
if (len == 0)
34823488
{
3483-
META_LOG_ERROR(md, "host interface name is zero");
3489+
META_LOG_ERROR(md, "char data is zero");
34843490

34853491
return SAI_STATUS_INVALID_PARAMETER;
34863492
}
@@ -3491,7 +3497,7 @@ sai_status_t Meta::meta_generic_validation_create(
34913497

34923498
if (c < 0x20 || c > 0x7e)
34933499
{
3494-
META_LOG_ERROR(md, "interface name contains invalid character 0x%02x", c);
3500+
META_LOG_ERROR(md, "char data contains invalid character 0x%02x", c);
34953501

34963502
return SAI_STATUS_INVALID_PARAMETER;
34973503
}

0 commit comments

Comments
 (0)