Improving the clarity of the code

Callers of the function 
pldm_bios_table_attr_value_entry_enum_decode_handles() provide the 
pointer to the buffer and its size. Modifying the buffer size and using 
it in the library can be error-prone. Adjust the code to only read the 
buffer size and not to modify it.

Tested:
Unit Tests passed.

Change-Id: I26e843fa817e969719aa19f1922b4ea8622078f2
Signed-off-by: Archana Kakani <archana.kakani@ibm.com>
diff --git a/src/bios_table.c b/src/bios_table.c
index d5cc626..db1a6be 100644
--- a/src/bios_table.c
+++ b/src/bios_table.c
@@ -675,10 +675,10 @@
 {
 	uint8_t curr_num =
 		pldm_bios_table_attr_value_entry_enum_decode_number(entry);
-	number = number < curr_num ? number : curr_num;
-	memcpy(handles, &entry->value[1], number);
+	curr_num = number < curr_num ? number : curr_num;
+	memcpy(handles, &entry->value[1], curr_num);
 
-	return number;
+	return curr_num;
 }
 
 LIBPLDM_ABI_STABLE
diff --git a/tests/libpldm_bios_table_test.cpp b/tests/libpldm_bios_table_test.cpp
index 83e7fd9..d42d126 100644
--- a/tests/libpldm_bios_table_test.cpp
+++ b/tests/libpldm_bios_table_test.cpp
@@ -637,6 +637,21 @@
     EXPECT_EQ(rc, 2);
     EXPECT_EQ(handles[0], 0);
     EXPECT_EQ(handles[1], 1);
+
+    /* Buffer size is more than the number of current string handles */
+    std::vector<uint8_t> handleIndexes(3, 0);
+    rc = pldm_bios_table_attr_value_entry_enum_decode_handles(
+        entry, handleIndexes.data(), handleIndexes.size());
+    EXPECT_EQ(rc, 2);
+    EXPECT_EQ(handleIndexes[0], 0);
+    EXPECT_EQ(handleIndexes[1], 1);
+
+    /* Buffersize is less than the number of current string handles */
+    std::vector<uint8_t> strHandles(1, 0);
+    rc = pldm_bios_table_attr_value_entry_enum_decode_handles(
+        entry, strHandles.data(), strHandles.size());
+    EXPECT_EQ(rc, 1);
+    EXPECT_EQ(strHandles[0], 0);
 }
 
 TEST(AttrValTable, stringEntryEncodeTest)