pdr: pldm_entity_association_pdr_extract(): Assign out params at exit

Avoid assigning results to out-parameters before we know we can't fail.

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I7b99d0a04471e97ae6bf13c2467dd938c57c1485
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 501794a..1524149 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -66,6 +66,7 @@
 19. pdr: pldm_entity_association_tree_find(): Early exit on bad arguments
 20. pdr: pldm_entity_association_tree_destroy_root(): Exit early on bad arg
 21. pdr: pldm_entity_association_pdr_extract(): Early exit on bad arguments
+22. pdr: pldm_entity_association_pdr_extract(): Assign out params at exit
 
 ### Deprecated
 
diff --git a/src/pdr.c b/src/pdr.c
index aeab9e1..5f2634c 100644
--- a/src/pdr.c
+++ b/src/pdr.c
@@ -1304,25 +1304,28 @@
 	start += sizeof(struct pldm_pdr_hdr);
 	struct pldm_pdr_entity_association *entity_association_pdr =
 		(struct pldm_pdr_entity_association *)start;
-	*num_entities = entity_association_pdr->num_children + 1;
-	assert(*num_entities >= 2);
+	size_t l_num_entities = entity_association_pdr->num_children + 1;
+	assert(l_num_entities >= 2);
 	assert(start + sizeof(struct pldm_pdr_entity_association) +
-		       sizeof(pldm_entity) * (*num_entities - 2) ==
+		       sizeof(pldm_entity) * (l_num_entities - 2) ==
 	       end);
-	*entities = malloc(sizeof(pldm_entity) * *num_entities);
-	assert(*entities != NULL);
-	(*entities)[0].entity_type =
+	pldm_entity *l_entities = malloc(sizeof(pldm_entity) * l_num_entities);
+	assert(l_entities != NULL);
+	l_entities[0].entity_type =
 		le16toh(entity_association_pdr->container.entity_type);
-	(*entities)[0].entity_instance_num =
+	l_entities[0].entity_instance_num =
 		le16toh(entity_association_pdr->container.entity_instance_num);
-	(*entities)[0].entity_container_id =
+	l_entities[0].entity_container_id =
 		le16toh(entity_association_pdr->container.entity_container_id);
 	pldm_entity *curr_entity = entity_association_pdr->children;
-	for (size_t i = 1; i < *num_entities; i++, curr_entity++) {
-		(*entities)[i].entity_type = le16toh(curr_entity->entity_type);
-		(*entities)[i].entity_instance_num =
+	for (size_t i = 1; i < l_num_entities; i++, curr_entity++) {
+		l_entities[i].entity_type = le16toh(curr_entity->entity_type);
+		l_entities[i].entity_instance_num =
 			le16toh(curr_entity->entity_instance_num);
-		(*entities)[i].entity_container_id =
+		l_entities[i].entity_container_id =
 			le16toh(curr_entity->entity_container_id);
 	}
+
+	*num_entities = l_num_entities;
+	*entities = l_entities;
 }