pdr: pldm_entity_association_pdr_extract(): Return early if necessary
Now that we're no longer mutating out-parameters unless we're
successful, return early if success is not possible.
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I6ed9b584d836ae879531f136f6125b90b6185920
diff --git a/src/pdr.c b/src/pdr.c
index 5f2634c..3442c0f 100644
--- a/src/pdr.c
+++ b/src/pdr.c
@@ -1297,6 +1297,9 @@
struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)pdr;
assert(hdr->type == PLDM_PDR_ENTITY_ASSOCIATION);
+ if (hdr->type != PLDM_PDR_ENTITY_ASSOCIATION) {
+ return;
+ }
const uint8_t *start = (uint8_t *)pdr;
const uint8_t *end __attribute__((unused)) =
@@ -1306,11 +1309,22 @@
(struct pldm_pdr_entity_association *)start;
size_t l_num_entities = entity_association_pdr->num_children + 1;
assert(l_num_entities >= 2);
+ if (l_num_entities < 2) {
+ return;
+ }
assert(start + sizeof(struct pldm_pdr_entity_association) +
sizeof(pldm_entity) * (l_num_entities - 2) ==
end);
+ if (start + sizeof(struct pldm_pdr_entity_association) +
+ sizeof(pldm_entity) * (l_num_entities - 2) !=
+ end) {
+ return;
+ }
pldm_entity *l_entities = malloc(sizeof(pldm_entity) * l_num_entities);
assert(l_entities != NULL);
+ if (!l_entities) {
+ return;
+ }
l_entities[0].entity_type =
le16toh(entity_association_pdr->container.entity_type);
l_entities[0].entity_instance_num =