bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_enum()

Users should prefer pldm_bios_table_attr_value_entry_encode_enum_check()
which returns an error code instead of preventing misbehaviour via
assert().

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I9442fd35a0d2240572d600189387215664bef60d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bb7bbaa..347cbc2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,6 +29,10 @@
 
    Migrate to pldm_bios_table_attr_entry_integer_encode_check()
 
+2. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_enum()
+
+   Migrate to pldm_bios_table_attr_value_entry_encode_enum_check()
+
 ### Removed
 
 1. bios_table: Remove deprecated APIs sanitized by assert():
diff --git a/include/libpldm/bios_table.h b/include/libpldm/bios_table.h
index 1b61178..bf4bd46 100644
--- a/include/libpldm/bios_table.h
+++ b/include/libpldm/bios_table.h
@@ -504,11 +504,13 @@
  *  @param[in] count - Total number of current values for this enum attribute
  *  @param[in] handle_indexes - Index into the array(provided in the BIOS
  * Attribute Table) of the possible values of string handles for this attribute.
- *  @return pldm_completion_codes
+ *  @return PLDM_SUCCESS on success. PLDM_ERROR_INVALID_DATA if entry or handles are NULL, or if
+ *          attr_type is not a PLDM_BIOS_ENUMERATION. PLDM_ERROR_INVALID_LENGTH if entry_length
+ *          lacks capacity to encode handles into entry.
  */
 int pldm_bios_table_attr_value_entry_encode_enum_check(
 	void *entry, size_t entry_length, uint16_t attr_handle,
-	uint8_t attr_type, uint8_t count, uint8_t *handles);
+	uint8_t attr_type, uint8_t count, const uint8_t *handles);
 
 /** @brief Get length that an attribute value entry(type: string) will take
  *  @param[in] string_length - Length of the current string in byte, 0 indicates
diff --git a/src/bios_table.c b/src/bios_table.c
index 3a91e3d..5b19b1a 100644
--- a/src/bios_table.c
+++ b/src/bios_table.c
@@ -648,22 +648,15 @@
 	       sizeof(count) + count;
 }
 
-LIBPLDM_ABI_STABLE
+LIBPLDM_ABI_DEPRECATED
 void pldm_bios_table_attr_value_entry_encode_enum(
 	void *entry, size_t entry_length, uint16_t attr_handle,
 	uint8_t attr_type, uint8_t count, const uint8_t *handles)
 {
-	size_t length =
-		pldm_bios_table_attr_value_entry_encode_enum_length(count);
-	assert(length <= entry_length);
-
-	struct pldm_bios_attr_val_table_entry *table_entry = entry;
-	table_entry->attr_handle = htole16(attr_handle);
-	table_entry->attr_type = attr_type;
-	table_entry->value[0] = count;
-	if (count != 0) {
-		memcpy(&table_entry->value[1], handles, count);
-	}
+	int rc = pldm_bios_table_attr_value_entry_encode_enum_check(
+		entry, entry_length, attr_handle, attr_type, count, handles);
+	(void)rc;
+	assert(rc == PLDM_SUCCESS);
 }
 
 LIBPLDM_ABI_STABLE
@@ -689,9 +682,10 @@
 LIBPLDM_ABI_STABLE
 int pldm_bios_table_attr_value_entry_encode_enum_check(
 	void *entry, size_t entry_length, uint16_t attr_handle,
-	uint8_t attr_type, uint8_t count, uint8_t *handles)
+	uint8_t attr_type, uint8_t count, const uint8_t *handles)
 {
 	POINTER_CHECK(entry);
+	POINTER_CHECK(handles);
 	if (count != 0 && handles == NULL) {
 		return PLDM_ERROR_INVALID_DATA;
 	}
@@ -699,8 +693,13 @@
 	size_t length =
 		pldm_bios_table_attr_value_entry_encode_enum_length(count);
 	BUFFER_SIZE_EXPECT(entry_length, length);
-	pldm_bios_table_attr_value_entry_encode_enum(
-		entry, entry_length, attr_handle, attr_type, count, handles);
+	struct pldm_bios_attr_val_table_entry *table_entry = entry;
+	table_entry->attr_handle = htole16(attr_handle);
+	table_entry->attr_type = attr_type;
+	table_entry->value[0] = count;
+	if (count != 0) {
+		memcpy(&table_entry->value[1], handles, count);
+	}
 	return PLDM_SUCCESS;
 }
 
diff --git a/tests/libpldm_bios_table_test.cpp b/tests/libpldm_bios_table_test.cpp
index cdcefce..6bf60a7 100644
--- a/tests/libpldm_bios_table_test.cpp
+++ b/tests/libpldm_bios_table_test.cpp
@@ -590,7 +590,7 @@
     EXPECT_DEATH(
         pldm_bios_table_attr_value_entry_encode_enum(
             encodeEntry.data(), encodeEntry.size() - 1, 0, 0, 2, handles),
-        "length <= entry_length");
+        "rc == PLDM_SUCCESS");
 
     auto rc = pldm_bios_table_attr_value_entry_encode_enum_check(
         encodeEntry.data(), encodeEntry.size(), 0, PLDM_BIOS_ENUMERATION, 2,