diff --git a/src/dsp/firmware_update.c b/src/dsp/firmware_update.c
index a52fdf6..cf27fe7 100644
--- a/src/dsp/firmware_update.c
+++ b/src/dsp/firmware_update.c
@@ -544,7 +544,7 @@
 	pldm_msgbuf_span_remaining(buf, (void **)&iter->field->ptr,
 				   &iter->field->length);
 
-	return pldm_msgbuf_destroy(buf);
+	return pldm_msgbuf_complete(buf);
 }
 
 static int decode_descriptor_type_length_value_errno(
@@ -867,7 +867,7 @@
 		}
 	}
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1041,7 +1041,7 @@
 	/* Further calls to encode_get_firmware_parameters_resp_comp_entry
 	 * will populate the remainder */
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_TESTING
@@ -1102,7 +1102,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1242,7 +1242,7 @@
 	pldm_msgbuf_extract(buf, resp_data->max_number_of_downstream_devices);
 	pldm_msgbuf_extract(buf, resp_data->capabilities.value);
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1286,7 +1286,7 @@
 	// Data correctness has been verified, cast it to 1-byte data directly.
 	pldm_msgbuf_insert(buf, params_req->transfer_operation_flag);
 
-	return pldm_msgbuf_destroy(buf);
+	return pldm_msgbuf_complete(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1338,7 +1338,7 @@
 		return rc;
 	}
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return rc;
 	}
@@ -1375,7 +1375,7 @@
 	pldm_msgbuf_span_remaining(buf, (void **)&iter->field.ptr,
 				   &iter->field.length);
 
-	return pldm_msgbuf_destroy(buf);
+	return pldm_msgbuf_complete(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1419,7 +1419,7 @@
 	// Data correctness has been verified, cast it to 1-byte data directly.
 	pldm_msgbuf_insert(buf, params_req->transfer_operation_flag);
 
-	return pldm_msgbuf_destroy(buf);
+	return pldm_msgbuf_complete(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1468,7 +1468,7 @@
 		return rc;
 	}
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return rc;
 	}
@@ -1668,7 +1668,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1736,7 +1736,7 @@
 
 	/* TODO: DSP0267 1.3.0 adds GetPackageDataMaximumTransferSize */
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1842,7 +1842,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1912,7 +1912,7 @@
 	pldm_msgbuf_insert(buf, resp_data->comp_resp);
 	pldm_msgbuf_insert(buf, resp_data->comp_resp_code);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2103,7 +2103,7 @@
 	pldm_msgbuf_insert(buf, resp_data->update_option_flags_enabled.value);
 	pldm_msgbuf_insert(buf, resp_data->time_before_req_fw_data);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2157,7 +2157,7 @@
 	pldm_msgbuf_insert(buf, req_params->offset);
 	pldm_msgbuf_insert(buf, req_params->length);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2230,7 +2230,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2304,7 +2304,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2391,7 +2391,7 @@
 	pldm_msgbuf_insert(
 		buf, req_data->comp_activation_methods_modification.value);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2543,7 +2543,7 @@
 	pldm_msgbuf_insert_uint8(buf, PLDM_SUCCESS);
 	pldm_msgbuf_insert(buf, resp_data->estimated_time_activation);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2675,7 +2675,7 @@
 	pldm_msgbuf_insert(buf, status->reason_code);
 	pldm_msgbuf_insert(buf, status->update_option_flags_enabled.value);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2814,5 +2814,5 @@
 			   resp_data->non_functioning_component_indication);
 	pldm_msgbuf_insert(buf, resp_data->non_functioning_component_bitmap);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
diff --git a/src/dsp/pdr.c b/src/dsp/pdr.c
index efc94d2..789ceeb 100644
--- a/src/dsp/pdr.c
+++ b/src/dsp/pdr.c
@@ -487,7 +487,7 @@
 			prev = pldm_pdr_get_prev_record(repo, record);
 			return pldm_pdr_remove_record(repo, record, prev);
 		}
-		rc = pldm_msgbuf_destroy(buf);
+		rc = pldm_msgbuf_complete(buf);
 		if (rc) {
 			return rc;
 		}
@@ -1641,7 +1641,7 @@
 	}
 
 	// Add new contained entity as a child of new PDR
-	rc = pldm_msgbuf_destroy(src);
+	rc = pldm_msgbuf_complete(src);
 	if (rc) {
 		goto cleanup_new_record_data;
 	}
@@ -1654,11 +1654,11 @@
 	pldm_msgbuf_copy(dst, src, uint16_t, child_entity_instance_num);
 	pldm_msgbuf_copy(dst, src, uint16_t, child_entity_container_id);
 
-	rc = pldm_msgbuf_destroy(src);
+	rc = pldm_msgbuf_complete(src);
 	if (rc) {
 		goto cleanup_new_record_data;
 	}
-	rc = pldm_msgbuf_destroy(dst);
+	rc = pldm_msgbuf_complete(dst);
 	if (rc) {
 		goto cleanup_new_record_data;
 	}
@@ -1791,15 +1791,15 @@
 	container_id = htole16(container_id);
 	memcpy(container_id_addr, &container_id, sizeof(uint16_t));
 
-	rc = pldm_msgbuf_destroy(dst);
+	rc = pldm_msgbuf_complete(dst);
 	if (rc) {
 		goto cleanup_new_record_data;
 	}
-	rc = pldm_msgbuf_destroy(src_p);
+	rc = pldm_msgbuf_complete(src_p);
 	if (rc) {
 		goto cleanup_new_record_data;
 	}
-	rc = pldm_msgbuf_destroy(src_c);
+	rc = pldm_msgbuf_complete(src_c);
 	if (rc) {
 		goto cleanup_new_record_data;
 	}
@@ -1878,7 +1878,7 @@
 			}
 		}
 	cleanup:
-		rc = pldm_msgbuf_destroy(dst);
+		rc = pldm_msgbuf_complete(dst);
 		if (rc) {
 			return rc;
 		}
@@ -2006,8 +2006,8 @@
 		pldm_msgbuf_insert(dst, e.entity_container_id);
 	}
 
-	if ((rc = pldm_msgbuf_destroy(src)) ||
-	    (rc = pldm_msgbuf_destroy(dst)) ||
+	if ((rc = pldm_msgbuf_complete(src)) ||
+	    (rc = pldm_msgbuf_complete(dst)) ||
 	    (rc = pldm_pdr_replace_record(repo, record, prev, new_record))) {
 		goto cleanup_new_record_data;
 	}
@@ -2079,7 +2079,7 @@
 	pldm_msgbuf_span_required(dst, skip_data_size, (void **)&skip_data);
 	pldm_msgbuf_extract(dst, record_fru_rsi);
 
-	rc = pldm_msgbuf_destroy(dst);
+	rc = pldm_msgbuf_complete(dst);
 	if (rc) {
 		return rc;
 	}
@@ -2166,7 +2166,7 @@
 			return pldm_pdr_remove_record(repo, record, prev);
 		}
 	cleanup:
-		rc = pldm_msgbuf_destroy(buf);
+		rc = pldm_msgbuf_complete(buf);
 		if (rc) {
 			return rc;
 		}
diff --git a/src/dsp/platform.c b/src/dsp/platform.c
index 11fa9ae..b37de42 100644
--- a/src/dsp/platform.c
+++ b/src/dsp/platform.c
@@ -298,7 +298,7 @@
 		pldm_msgbuf_extract(buf, field[i].effecter_state);
 	}
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -338,7 +338,7 @@
 	pldm_msgbuf_extract_p(buf, request_cnt);
 	pldm_msgbuf_extract_p(buf, record_chg_num);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -499,7 +499,7 @@
 	pldm_msgbuf_extract_p(buf, largest_record_size);
 	pldm_msgbuf_extract_p(buf, data_transfer_handle_timeout);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -559,7 +559,7 @@
 	pldm_msgbuf_extract(buf, resp->largest_record_size);
 	pldm_msgbuf_extract(buf, resp->data_transfer_handle_timeout);
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -655,7 +655,7 @@
 		pldm_msgbuf_extract_p(buf, transfer_crc);
 	}
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -713,7 +713,7 @@
 		pldm_msgbuf_extract_p(buf, transfer_crc);
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -752,7 +752,7 @@
 	pldm_msgbuf_extract_effecter_value(buf, *effecter_data_size,
 					   effecter_value);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -990,7 +990,7 @@
 		pldm_msgbuf_extract(buf, field[i].event_state);
 	}
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1024,7 +1024,7 @@
 	pldm_msgbuf_extract(buf, sensor_rearm->byte);
 	pldm_msgbuf_extract_p(buf, reserved);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1095,7 +1095,7 @@
 	pldm_msgbuf_extract_p(buf, tid);
 	pldm_msgbuf_extract_p(buf, event_class);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1168,7 +1168,7 @@
 		return PLDM_ERROR_INVALID_DATA;
 	}
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1256,7 +1256,7 @@
 			return PLDM_ERROR_INVALID_LENGTH;
 		}
 
-		rc = pldm_msgbuf_destroy(buf);
+		rc = pldm_msgbuf_complete(buf);
 		if (rc) {
 			return pldm_xlate_errno(rc);
 		}
@@ -1288,7 +1288,7 @@
 		pldm_msgbuf_insert(buf, checksum);
 	}
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1390,7 +1390,7 @@
 		return PLDM_ERROR_INVALID_DATA;
 	}
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1455,7 +1455,7 @@
 
 	pldm_msgbuf_extract_p(buf, terminus_max_buffer_size);
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1548,7 +1548,7 @@
 	}
 
 	if (*number_event_class_returned == 0) {
-		rc = pldm_msgbuf_destroy(buf);
+		rc = pldm_msgbuf_complete(buf);
 		if (rc) {
 			return pldm_xlate_errno(rc);
 		}
@@ -1564,7 +1564,7 @@
 		pldm_msgbuf_extract(buf, event_class[i]);
 	}
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1631,7 +1631,7 @@
 	*event_class_data_offset =
 		sizeof(*sensor_id) + sizeof(*sensor_event_class_type);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1662,7 +1662,7 @@
 	pldm_msgbuf_extract_p(buf, present_op_state);
 	pldm_msgbuf_extract_p(buf, previous_op_state);
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1696,7 +1696,7 @@
 	pldm_msgbuf_extract_p(buf, event_state);
 	pldm_msgbuf_extract_p(buf, previous_event_state);
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1792,7 +1792,7 @@
 		return PLDM_ERROR_INVALID_DATA;
 	}
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -1893,7 +1893,7 @@
 	pldm_msgbuf_extract_range_field_format(
 		buf, pdr_value->range_field_format, pdr_value->fatal_low);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2031,7 +2031,7 @@
 
 	pldm_msgbuf_extract_p(buf, effecter_id);
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2097,7 +2097,7 @@
 	pldm_msgbuf_extract_effecter_value(buf, *effecter_data_size,
 					   present_value);
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2199,7 +2199,7 @@
 	*change_record_data_offset =
 		sizeof(*event_data_format) + sizeof(*number_of_change_records);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2238,7 +2238,7 @@
 
 	pldm_msgbuf_extract(buf, poll_event->data_transfer_handle);
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_TESTING
@@ -2267,7 +2267,7 @@
 	pldm_msgbuf_insert(buf, poll_event->event_id);
 	pldm_msgbuf_insert(buf, poll_event->data_transfer_handle);
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2299,7 +2299,7 @@
 	*change_entry_data_offset = sizeof(*event_data_operation) +
 				    sizeof(*number_of_change_entries);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2389,7 +2389,7 @@
 	pldm_msgbuf_extract_sensor_value(buf, *sensor_data_size,
 					 present_reading);
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2490,7 +2490,7 @@
 	pldm_msgbuf_extract_p(buf, sensor_id);
 	pldm_msgbuf_extract_p(buf, rearm_event_state);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2564,7 +2564,7 @@
 
 	pldm_msgbuf_extract_p(buf, completion_code);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2609,7 +2609,7 @@
 		pldm_msgbuf_extract_p(buf, heartbeat_timer);
 	}
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2694,7 +2694,7 @@
 	pldm_msgbuf_insert(buf, data_transfer_handle);
 	pldm_msgbuf_insert(buf, event_id_to_acknowledge);
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2770,7 +2770,7 @@
 		pldm_msgbuf_extract_p(buf, event_data_integrity_checksum);
 	}
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2866,7 +2866,7 @@
 	pldm_msgbuf_extract_range_field_format(
 		buf, pdr_value->range_field_format, pdr_value->rated_min);
 
-	rc = pldm_msgbuf_destroy_consumed(buf);
+	rc = pldm_msgbuf_complete_consumed(buf);
 	if (rc) {
 		return pldm_xlate_errno(rc);
 	}
@@ -2908,7 +2908,7 @@
 
 	pldm_msgbuf_insert(buf, effecter_id);
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2933,7 +2933,7 @@
 
 	pldm_msgbuf_extract_p(buf, effecter_id);
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2986,7 +2986,7 @@
 		pldm_msgbuf_extract(buf, field->present_state);
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -3039,7 +3039,7 @@
 		pldm_msgbuf_insert(buf, field->present_state);
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -3132,7 +3132,7 @@
 		}
 	}
 
-	rc = pldm_msgbuf_destroy_consumed(src);
+	rc = pldm_msgbuf_complete_consumed(src);
 	if (rc < 0) {
 		return rc;
 	}
@@ -3151,9 +3151,9 @@
 		pldm_msgbuf_span_string_utf16(src, NULL, NULL);
 	}
 
-	if ((rc = pldm_msgbuf_destroy(dst)) ||
-	    (rc = pldm_msgbuf_destroy(src)) ||
-	    (rc = pldm_msgbuf_destroy(buf))) {
+	if ((rc = pldm_msgbuf_complete(dst)) ||
+	    (rc = pldm_msgbuf_complete(src)) ||
+	    (rc = pldm_msgbuf_complete(buf))) {
 		return rc;
 	}
 
@@ -3218,7 +3218,7 @@
 		pdr->names[i].tag = loc;
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -3273,7 +3273,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
diff --git a/src/firmware_device/fd.c b/src/firmware_device/fd.c
index d43b6cc..9ac1ab8 100644
--- a/src/firmware_device/fd.c
+++ b/src/firmware_device/fd.c
@@ -363,8 +363,8 @@
 		}
 	}
 
-	return pldm_msgbuf_destroy_used(buf, *resp_payload_len,
-					resp_payload_len);
+	return pldm_msgbuf_complete_used(buf, *resp_payload_len,
+					 resp_payload_len);
 }
 
 LIBPLDM_CC_NONNULL
diff --git a/src/msgbuf.h b/src/msgbuf.h
index b4616b6..437b423 100644
--- a/src/msgbuf.h
+++ b/src/msgbuf.h
@@ -143,11 +143,8 @@
  *
  * @param[in] ctx - pldm_msgbuf context for extractor
  *
- * @return PLDM_SUCCESS iff there are zero bytes of data that remain unread from
- * the buffer and no overflow has occurred. Otherwise, PLDM_ERROR_INVALID_LENGTH
- * indicates that an incorrect sequence of accesses have occurred, and
- * PLDM_ERROR_INVALID_DATA indicates that the provided context was not a valid
- * pointer.
+ * @return 0 iff there are zero bytes of data that remain unread from the buffer
+ * and no overflow has occurred. Otherwise, -EBADMSG.
  */
 LIBPLDM_CC_NONNULL
 LIBPLDM_CC_ALWAYS_INLINE
@@ -162,19 +159,16 @@
 }
 
 /**
- * @brief Destroy the pldm buf
+ * @brief Complete the pldm_msgbuf instance
  *
  * @param[in] ctx - pldm_msgbuf context for extractor
  *
- * @return PLDM_SUCCESS if all buffer accesses were in-bounds,
- * PLDM_ERROR_INVALID_DATA if the ctx parameter is invalid, or
- * PLDM_ERROR_INVALID_LENGTH if prior accesses would have occurred beyond the
- * bounds of the buffer.
+ * @return 0 if all buffer accesses were in-bounds, -EOVERFLOW otherwise.
  */
 LIBPLDM_CC_NONNULL
 LIBPLDM_CC_ALWAYS_INLINE
 LIBPLDM_CC_WARN_UNUSED_RESULT
-int pldm_msgbuf_destroy(struct pldm_msgbuf *ctx)
+int pldm_msgbuf_complete(struct pldm_msgbuf *ctx)
 {
 	int valid;
 
@@ -187,20 +181,18 @@
 }
 
 /**
- * @brief Destroy the pldm_msgbuf instance, and check that the underlying buffer
- * has been completely consumed without overflow
+ * @brief Complete the pldm_msgbuf instance, and check that the underlying buffer
+ * has been entirely consumed without overflow
  *
  * @param[in] ctx - pldm_msgbuf context
  *
- * @return PLDM_SUCCESS if all buffer access were in-bounds and completely
- * consume the underlying buffer. Otherwise, PLDM_ERROR_INVALID_DATA if the ctx
- * parameter is invalid, or PLDM_ERROR_INVALID_LENGTH if prior accesses would
- * have occurred byond the bounds of the buffer
+ * @return 0 if all buffer access were in-bounds and completely consume the
+ * underlying buffer. Otherwise, -EBADMSG.
  */
 LIBPLDM_CC_NONNULL
 LIBPLDM_CC_ALWAYS_INLINE
 LIBPLDM_CC_WARN_UNUSED_RESULT
-int pldm_msgbuf_destroy_consumed(struct pldm_msgbuf *ctx)
+int pldm_msgbuf_complete_consumed(struct pldm_msgbuf *ctx)
 {
 	int consumed;
 
@@ -1009,7 +1001,7 @@
 		/*
 		 * We have hit the end of the buffer prior to the NUL terminator.
 		 * Optimistically, the NUL terminator was one-beyond-the-end. Setting
-		 * ctx->remaining negative ensures the `pldm_msgbuf_destroy*()` APIs also
+		 * ctx->remaining negative ensures the `pldm_msgbuf_complete*()` APIs also
 		 * return an error.
 		 */
 		ctx->remaining = -1;
@@ -1082,7 +1074,7 @@
 		/*
 		 * Optimistically, the last required pattern byte was one beyond the end of
 		 * the buffer. Setting ctx->remaining negative ensures the
-		 * `pldm_msgbuf_destroy*()` APIs also return an error.
+		 * `pldm_msgbuf_complete*()` APIs also return an error.
 		 */
 		ctx->remaining = -1;
 		return -EOVERFLOW;
@@ -1185,7 +1177,8 @@
 }
 
 /**
- * Return the number of bytes used in a msgbuf instance.
+ * @brief Complete the pldm_msgbuf instance and return the number of bytes
+ * consumed.
  *
  * @param ctx - The msgbuf.
  * @param orig_len - The original size of the msgbuf, the `len` argument passed to
@@ -1195,12 +1188,14 @@
  * This can be called after a number of pldm_msgbuf_insert...() calls to
  * determine the total size that was written.
  *
+ * @return 0 on success, -EOVERFLOW if an implausible orig_len was provided or
+ * an out-of-bounds access occurred.
  */
 LIBPLDM_CC_NONNULL
 LIBPLDM_CC_ALWAYS_INLINE
 LIBPLDM_CC_WARN_UNUSED_RESULT
-int pldm_msgbuf_destroy_used(struct pldm_msgbuf *ctx, size_t orig_len,
-			     size_t *ret_used_len)
+int pldm_msgbuf_complete_used(struct pldm_msgbuf *ctx, size_t orig_len,
+			      size_t *ret_used_len)
 {
 	int rc;
 
diff --git a/src/oem/meta/file_io.c b/src/oem/meta/file_io.c
index db9407b..cd125ef 100644
--- a/src/oem/meta/file_io.c
+++ b/src/oem/meta/file_io.c
@@ -52,7 +52,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_DEPRECATED_UNSAFE
@@ -142,7 +142,7 @@
 		return -EPROTO;
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -214,5 +214,5 @@
 		return -EPROTO;
 	}
 
-	return pldm_msgbuf_destroy(buf);
+	return pldm_msgbuf_complete(buf);
 }
