1# Changelog 2 3All notable changes to this project will be documented in this file. 4 5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6and this project adheres to 7[Semantic Versioning](https://semver.org/spec/v2.0.0.html). 8 9Change categories: 10 11- Added 12- Changed 13- Deprecated 14- Removed 15- Fixed 16- Security 17 18## [Unreleased] 19 20### Added 21 221. dsp: firmware_update: Iterators for downstream device descriptors 232. platform: add PLDM Command numbers 243. base: add PLDM Command numbers 25 26### Changed 27 281. Register assignment for parameters of `encode_state_effecter_pdr()` 29 302. dsp: firmware_update: Iterators for downstream device descriptors 31 32 The prototype for `decode_query_downstream_identifiers_resp()` was updated to 33 improve ergonomics for the iterator APIs. 34 353. meson: Specify OEM extensions in an array 36 37 `include/libpldm/meson.build` is modified, but not in ways that are 38 significant. 39 404. Return `ENOENT` rather than `ENOKEY` from 41 `pldm_pdr_find_child_container_id_index_range_exclude()` 42 435. dsp: firmware_update: Change return type of downstream device ABIs to ERRNO 44 45 Those downstream device related ABIs have not been stabilized yet, change 46 return type from PLDM Completion Code to ERRNO 47 48### Fixed 49 501. dsp: platform: Fix location of closing paren in overflow detection 512. libpldm: Install api header, update changelog 52 53## [0.10.0] 2024-11-01 54 55### Added 56 571. oem: meta: Add decode_oem_meta_file_io_write_req() 582. oem: meta: Add decode_oem_meta_file_io_read_req() 593. oem: meta: Add encode_oem_meta_file_io_read_resp() 604. pdr: Add pldm_entity_association_pdr_remove_contained_entity() 615. pdr: Add pldm_pdr_remove_fru_record_set_by_rsi() 626. pldm_entity_association_tree_copy_root_check() 637. oem: ibm: Add topology related state set and enum 64 658. base: Add size and buffer macros for struct pldm_msg 66 67 Together these macros reduce the need for use of reinterpret_cast<>() in C++. 68 699. entity: Add new entity types from DSP0249 v1.3.0 7010. stateset: Add new state sets from DSP0249 v1.3.0 71 72### Changed 73 741. dsp: bios_table: Null check for pldm_bios_table_iter_is_end() 75 76 pldm_bios_table_iter_is_end() now returns true if the provided argument is 77 NULL. 78 792. Register assignment for parameters of a number of APIs changed with increased 80 scrutiny on their implementations. 81 82 - `decode_entity_auxiliary_names_pdr()` 83 - `decode_get_state_sensor_readings_resp()` 84 - `decode_oem_meta_file_io_req()` 85 - `decode_platform_event_message_req()` 86 - `decode_platform_event_message_resp()` 87 - `decode_sensor_op_data()` 88 - `encode_get_state_effecter_states_resp()` 89 - `encode_state_effecter_pdr()` 90 - `encode_state_sensor_pdr()` 91 - `pldm_bios_table_append_pad_checksum()` 92 - `pldm_bios_table_attr_value_entry_encode_enum()` 93 - `pldm_bios_table_attr_value_entry_encode_string()` 94 - `pldm_pdr_find_record()` 95 - `pldm_pdr_get_next_record()` 96 973. platform: Support PLDM_CPER_EVENT in encode_platform_event_message_req() 98 994. dsp: firmware_update: Bounds check 100 decode_downstream_device_parameter_table_entry_versions() 101 102 The additional bounds-checking required the addition of further length 103 parameters. 104 105### Deprecated 106 1071. oem: meta: Deprecate `decode_oem_meta_file_io_req()` 108 109 Users should switch to `decode_oem_meta_file_io_write_req()`. Modify this 110 function to make it safer. 111 112 Modification: 113 114 - The meaning of the returned result. 115 - Change parameters from individual pointers to a struct. 116 - Check the length provided in the message won't exceed the buffer. 117 1182. pldm_entity_association_tree_copy_root() 119 120 The implementation allocates, but gives no indication to the caller if an 121 allocation (and hence the copy) has failed. Users should migrate to 122 pldm_entity_association_tree_copy_root_check(). 123 1243. The following APIs are deprecated as unsafe due to various unfixable CWE 125 violations: 126 127 - [CWE-129: Improper Validation of Array Index](https://cwe.mitre.org/data/definitions/129.html) 128 129 - `encode_get_bios_current_value_by_handle_resp()` 130 - `encode_get_bios_table_resp()` 131 - `encode_get_file_table_resp()` 132 - `encode_get_version_resp()` 133 - `pldm_bios_table_attr_entry_enum_decode_def_indices()` 134 - `pldm_bios_table_attr_entry_enum_decode_def_num()` 135 - `pldm_bios_table_attr_find_by_handle()` 136 - `pldm_bios_table_attr_find_by_string_handle()` 137 - `pldm_bios_table_attr_value_find_by_handle()` 138 - `pldm_bios_table_iter_create()` 139 - `pldm_bios_table_iter_is_end()` 140 - `pldm_bios_table_string_find_by_handle()` 141 - `pldm_bios_table_string_find_by_string()` 142 143 - [CWE-617: Reachable Assertion](https://cwe.mitre.org/data/definitions/617.html) 144 145 - `pldm_entity_association_tree_copy_root()` 146 147 - [CWE-789: Memory Allocation with Excessive Size Value](https://cwe.mitre.org/data/definitions/789.html) 148 149 - `decode_oem_meta_file_io_req()` 150 151 - [CWE-823: Use of Out-of-range Pointer Offset](https://cwe.mitre.org/data/definitions/823.html) 152 - `encode_fru_record()` 153 - `encode_get_pdr_resp()` 154 - `pldm_bios_table_attr_entry_enum_encode_length()` 155 156### Removed 157 1581. Deprecated functions with the `_check` suffix 159 160 - `get_fru_record_by_option_check()` 161 - `pldm_bios_table_append_pad_checksum_check()` 162 - `pldm_bios_table_attr_entry_enum_decode_def_num_check()` 163 - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()` 164 - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()` 165 - `pldm_bios_table_attr_entry_enum_encode_check()` 166 - `pldm_bios_table_attr_entry_integer_encode_check()` 167 - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()` 168 - `pldm_bios_table_attr_entry_string_encode_check()` 169 - `pldm_bios_table_attr_value_entry_encode_enum_check()` 170 - `pldm_bios_table_attr_value_entry_encode_integer_check()` 171 - `pldm_bios_table_attr_value_entry_encode_string_check()` 172 - `pldm_bios_table_string_entry_decode_string_check()` 173 - `pldm_bios_table_string_entry_encode_check()` 174 - `pldm_entity_association_pdr_add_check()` 175 - `pldm_entity_association_pdr_add_from_node_check()` 176 - `pldm_pdr_add_check()` 177 - `pldm_pdr_add_fru_record_set_check()` 178 179### Fixed 180 1811. dsp: bios_table: Null check for pldm_bios_table_iter_is_end() 182 183 Avoid a caller-controlled NULL pointer dereference in the library 184 implementation. 185 1862. platform: fix encode/decode_poll_for_platform_event_message_req 187 188 Update checking of `TransferOperationFlag` and `eventIDToAcknowledge` to 189 follow spec. 190 1913. platform: Fix checking `eventIDToAcknowledge` 192 193 As the event receiver sends `PollForPlatformEventMessage` with the 194 `tranferFlag` is `AcknowledgementOnly`, the value `eventIDToAcknowledge` 195 should be the previously retrieved eventID (from the PLDM terminus). 196 1974. dsp: platform: Prevent overflow of arithmetic on event_data_length 1985. dsp: platform: Bounds check encode_sensor_state_pdr() 1996. dsp: platform: Bounds check encode_state_effecter_pdr() 2007. dsp: pdr: Bounds check pldm_entity_association_pdr_extract() 2018. dsp: bios_table: Bounds check pldm_bios_table_append_pad_checksum() 2029. dsp: bios_table: Bounds check 203 pldm_bios_table_attr_value_entry_encode_string() 20410. dsp: bios_table: Bounds check pldm_bios_table_attr_value_entry_encode_enum() 20511. dsp: firmware_update: Bounds check 206 decode_downstream_device_parameter_table_entry_versions() 20712. oem: ibm: platform: Bounds check encode_bios_attribute_update_event_req() 20813. dsp: fru: Bounds check encode_get_fru_record_by_option_resp() 20914. dsp: fru: Bounds check encode_fru_record() 21015. dsp: bios: Bounds check encode_set_bios_table_req() 21116. dsp: bios: Bounds check encode_set_bios_attribute_current_value_req() 21217. dsp: bios_table: Bounds check pldm_bios_table_string_entry_encode() 21318. dsp: pdr: Rework test in pldm_entity_association_pdr_extract() 21419. dsp: platform: Fix decode_set_event_receiver_req() 215 216## [0.9.1] - 2024-09-07 217 218### Changed 219 2201. Moved evolutions intended for v0.9.0 into place 221 222 Evolutions for the release have been moved from `evolutions/current` to 223 `evolutions/v0.9.1`. Library users can apply them to migrate off of 224 deprecated APIs. 225 226## [0.9.0] - 2024-09-07 227 228### Added 229 2301. base: Define macros for reserved TIDs 2312. pdr: Add pldm_entity_association_pdr_add_contained_entity_to_remote_pdr() 2323. pdr: Add pldm_entity_association_pdr_create_new() 2334. platform: Define macros for the responded transferflags 2345. pdr: Add pldm_pdr_get_terminus_handle() API 2356. pdr: Add related decode_entity_auxiliary_names_pdr() APIs 2367. fw_update: Add encode req & decode resp for get_downstream_fw_params 2378. platform: Add decode_pldm_platform_cper_event() API 2389. decode_get_pdr_repository_info_resp_safe() 239 240 Replaces decode_get_pdr_repository_info_resp() as discussed in the 241 `Deprecated` section below 242 24310. decode_get_pdr_resp_safe() 244 245 Replaces decode_get_pdr_resp() as discussed in the `Deprecated` section 246 below 247 248### Changed 249 2501. pdr: Stabilise related decode_entity_auxiliary_names_pdr() APIs 2512. platform: Rework decode/encode_pldm_message_poll_event_data() APIs 2523. platform: Stabilise decode_pldm_message_poll_event_data() APIs 2534. ABI break for decode_sensor_op_data() 254 255 Applying LIBPLDM_CC_NONNULL to the internal msgbuf APIs caused 256 abi-compliance-checker to flag a change in the register containing the 257 parameter `previous_op_state`. 258 2595. platform: Stabilise decode_pldm_platform_cper_event() API 2606. oem: meta: Stabilise decode_oem_meta_file_io_write_req() API 2617. oem: meta: Stabilise decode_oem_meta_file_io_read_req() API 2628. oem: meta: Stabilise encode_oem_meta_file_io_read_resp() API 263 264### Deprecated 265 2661. Rename and deprecate functions with the `_check` suffix 267 268 All library function return values always need to be checked. The `_check` 269 suffix is redundant, so remove it. Migration to the non-deprecated 270 equivalents without the `_check` suffix can be performed using 271 `scripts/ apply-renames` and the [clang-rename][] configurations under 272 `evolutions/` 273 274 The deprecated functions: 275 276 - `get_fru_record_by_option_check()` 277 - `pldm_bios_table_append_pad_checksum_check()` 278 - `pldm_bios_table_attr_entry_enum_decode_def_num_check()` 279 - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()` 280 - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()` 281 - `pldm_bios_table_attr_entry_enum_encode_check()` 282 - `pldm_bios_table_attr_entry_integer_encode_check()` 283 - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()` 284 - `pldm_bios_table_attr_entry_string_encode_check()` 285 - `pldm_bios_table_attr_value_entry_encode_enum_check()` 286 - `pldm_bios_table_attr_value_entry_encode_integer_check()` 287 - `pldm_bios_table_attr_value_entry_encode_string_check()` 288 - `pldm_bios_table_string_entry_decode_string_check()` 289 - `pldm_bios_table_string_entry_encode_check()` 290 - `pldm_entity_association_pdr_add_check()` 291 - `pldm_entity_association_pdr_add_from_node_check()` 292 - `pldm_pdr_add_check()` 293 - `pldm_pdr_add_fru_record_set_check()` 294 295[clang-rename]: https://clang.llvm.org/extra/clang-rename.html 296 2972. `decode_get_pdr_repository_info_resp()` 298 299 Users should move to `decode_get_pdr_repository_info_resp_safe()` which 300 eliminates the opportunity for buffer overruns when extracting objects from 301 the message. 302 3033. `decode_get_pdr_resp()` 304 305 Users should move to `decode_get_pdr_resp_safe()` which reduces the 306 invocation tedium and improves memory safety over `decode_get_pdr_resp()`. 307 308### Removed 309 3101. IBM OEM header compatibility symlinks. 311 312 Anyone left using the deprecated paths can migrate using the coccinelle patch 313 at `evolutions/current/oem-ibm-header-compat.cocci`. 314 315### Fixed 316 3171. requester: instance-id: Release read lock on conflict 3182. pdr: Error propagation for 319 pldm_entity_association_pdr_add_from_node_with_record_handle() 320 321## [0.8.0] - 2024-05-23 322 323### Added 324 3251. base: Provide pldm_msg_hdr_correlate_response() 3262. transport: af-mctp: Add pldm_transport_af_mctp_bind() 3273. oem: ibm: Add chapdata file type support 3284. base: Added PLDM_SMBIOS & PLDM_RDE message types 3295. oem: meta: Add decode_oem_meta_file_io_req() 3306. state-set: Add all state set values to system power state enum as per DSP0249 3317. platform: Add alias members to the enum 332 pldm_pdr_repository_chg_event_change_record_event_data_operation. 333 334 enum constants with inconsistent names are deprecated with this change. 335 remove old inconsistent enum members after backward compatibility cleanup is 336 done 337 3388. oem-ibm: Alias `pldm_oem_ibm_fru_field_type` members as `PLDM_OEM_IBM_*` 3399. oem: ibm: Add Firmware Update Access Key(UAK) as a FRU field type 34010. platform: Add 3 PDR type enum for Redfish Device Enablement per 341 DSP0248_1.2.0 34211. state_set: Add CONNECTED and DISCONNECTED enum for Link State set 34312. entity: Add enum for Network Interface Connectors and Network Ports 344 Connection Types 34513. pdr: Add decode_numeric_effecter_pdr_data() 34614. oem: ibm: Support for the Real SAI entity id 34715. fw_update: Add encode req & decode resp for query_downstream_devices 34816. fw_update: Add encode req & decode resp for query_downstream_identifiers 34917. platform: Add support for GetStateEffecterStates command 350 351### Changed 352 3531. base: Stabilise pldm_msg_hdr_correlate_response() 3542. transport: af-mctp: Stabilise pldm_transport_af_mctp_bind() 3553. libpldm: Fix header use 3564. libpldm: More fixes for header use 3575. pdr: Stabilise pldm_pdr_find_last_in_range() API 3586. pdr: Stabilise pldm_entity_association_pdr_add_from_node_with_record_handle() 3597. oem: meta: stabilise decode_oem_meta_file_io_req() 3608. pdr: pldm_entity_association_tree_copy_root(): Document preconditions 361 362### Deprecated 363 3641. Deprecate `pldm_oem_ibm_fru_field_type` members that that are not prefixed 365 with `PLDM_OEM_IBM_` 366 367### Fixed 368 3691. libpldm: Rationalise the local and installed path of pldm.h 3702. pdr: Assign record_handle in entity_association_pdr_add_children() 3713. msgbuf: Require sensor data enum in pldm_msgbuf_extract_sensor_value() 3724. pdr: Remove redundant constant for minimum numeric sensor PDR length 3735. tests: oem: meta: Fix fileio use of msgbuf 374 375## [0.7.0] - 2023-08-29 376 377### Added 378 3791. state-set: Add new enum for Operational Fault Status enum 380 381### Changed 382 3831. transport: Match specified metadata in pldm_transport_send_recv_msg() 3842. transport: mctp-demux: Drop ABI annotation for internal symbols 3853. transport: Stabilise core transport and implementation APIs 386 387 This stabilisation covers the following headers and functions: 388 389 - libpldm/transport.h 390 391 - pldm_transport_poll() 392 - pldm_transport_send_msg() 393 - pldm_transport_recv_msg() 394 - pldm_transport_send_recv_msg() 395 396 - libpldm/transport/af-mctp.h 397 398 - pldm_transport_af_mctp_init() 399 - pldm_transport_af_mctp_destroy() 400 - pldm_transport_af_mctp_core() 401 - pldm_transport_af_mctp_init_pollfd() 402 - pldm_transport_af_mctp_map_tid() 403 - pldm_transport_af_mctp_unmap_tid() 404 405 - libpldm/transport/mctp-demux.h 406 - pldm_transport_mctp_demux_init() 407 - pldm_transport_mctp_demux_destroy() 408 - pldm_transport_mctp_demux_core() 409 - pldm_transport_mctp_demux_init_pollfd() 410 - pldm_transport_mctp_demux_map_tid() 411 - pldm_transport_mctp_demux_unmap_tid() 412 413### Deprecated 414 4151. All the existing "requester" APIs from `libpldm/pldm.h` (also known as 416 `libpldm/requester/pldm.h`): 417 418 - pldm_open() 419 - pldm_send_recv() 420 - pldm_send() 421 - pldm_recv() 422 - pldm_recv_any() 423 - pldm_close() 424 425 Users should migrate to the newer "transport" APIs instead. 426 427## Fixed 428 4291. tests: Exclude transport tests when build excludes testing ABIs 4302. abi: Capture deprecation of pldm_close() 431 432## [0.6.0] - 2023-08-22 433 434### Changed 435 4361. pdr: Avoid ID overflow in pldm_entity_association_tree_add_entity() 4372. meson: Apply `b_ndebug=if-release` by default 4383. pdr : Stabilize pldm_entity_association_tree_add_entity() 4394. pdr: Stabilise pldm_entity_association_tree_find_with_locality() 4405. pdr: Stabilize pldm_entity_node_get_remote_container_id() 4416. transport: af-mctp: Assign out-params on success in \*\_recv() 4427. transport: Generalise the pldm_transport_recv_msg() API 443 444### Removed 445 4461. pdr: Remove pldm_entity_association_pdr_add() 4472. state-set: Remove enum pldm_state_set_operational_fault_status_values 448 449### Fixed 450 4511. transport: register init_pollfd callback for af-mctp 4522. transport: fix init_pollfd function parameter 4533. transport: Fix doxygen and variables for send and recv functions 4544. transport: af-mctp: Ensure malloc() succeeds in \*\_recv() 455 456## [0.5.0] - 2023-08-09 457 458### Added 459 4601. pdr: Introduce pldm_entity_association_pdr_add_check() 461 462### Changed 463 4641. pdr: Allow record_handle to be NULL for pldm_pdr_add_check() 4652. transport: pldm_transport_poll(): Adjust return value semantics 4663. transport: free un-wanted responses in pldm_transport_send_recv_msg() 467 468### Deprecated 469 4701. state-set: Enum pldm_state_set_operational_fault_status_values 471 472 The enum operational_fault_status is defined with wrong members and will 473 eventually be replaced with the correct members. Any uses of 474 pldm_state_set_operational_fault_status_values members should move to 475 equivalent pldm_state_set_operational_stress_status_values members if needed. 476 4772. platform: Struct field name in fru_record_set PDR 478 479 References to entity_instance_num should be changed to entity_instance 480 4813. platform: Struct field name in numeric sensor value PDR 482 483 References to entity_instance_num should be changed to entity_instance 484 485### Removed 486 4871. bios_table: Remove pldm_bios_table_attr_entry_integer_encode_length() 4882. bios_table: Remove pldm_bios_table_attr_value_entry_encode_enum() 4893. bios_table: Remove pldm_bios_table_attr_value_entry_encode_string() 4904. bios_table: Remove pldm_bios_table_attr_value_entry_encode_integer() 4915. bios_table: Remove pldm_bios_table_append_pad_checksum() 4926. fru: Remove get_fru_record_by_option() 4937. pdr: Make is_present() static 4948. pdr: Remove pldm_pdr_add() 4959. pdr: Remove pldm_pdr_add_fru_record_set() 49610. pdr: Remove pldm_entity_association_pdr_add_from_node() 49711. pdr: Make find_entity_ref_in_tree() static 49812. pdr: Make entity_association_tree_find() static 499 500### Fixed 501 5021. requester: Fix response buffer cast in pldm_send_recv() 5032. pdr: Hoist record handle overflow test to avoid memory leak 5043. transport: Correct comparison in while loop condition 505 506## [0.4.0] - 2023-07-14 507 508### Added 509 5101. bios_table: Introduce pldm_bios_table_append_pad_checksum_check() 5112. fru: Introduce get_fru_record_by_option_check() 5123. pdr: Introduce pldm_entity_association_pdr_add_from_node_check() 5134. pdr: Introduce pldm_pdr_add_check() 5145. pdr: Introduce pldm_pdr_add_fru_record_set_check() 515 516### Changed 517 5181. requester: Mark pldm_close() as LIBPLDM_ABI_TESTING 5192. requester: Expose pldm_close() in header 5203. bios_table: pldm_bios_table_string_entry_encode_check(): Handle overflow 5214. bios_table: pldm_bios_table_iter_create(): Return NULL on failed alloc 5225. bios_table: pldm_bios_table_iter_next(): Invalid entry halts iteration 5236. pdr: pldm_pdr_init(): Return NULL on allocation failure 5247. pdr: pldm_pdr_destroy(): Exit early if repo is NULL 5258. pdr: Document preconditions for trivial accessor functions 526 527 A trivial accessor function is one that exposes properties of an object in a 528 way can't result in an error, beyond passing an invalid argument to the 529 function. For APIs meeting this definition we define a precondition that 530 struct pointers must point to valid objects to avoid polluting the function 531 prototypes. The following APIs now have this precondition explicitly defined: 532 533 - pldm_entity_extract() 534 - pldm_entity_get_parent() 535 - pldm_entity_is_exist_parent() 536 - pldm_entity_is_node_parent() 537 - pldm_is_current_parent_child 538 - pldm_is_empty_entity_assoc_tree() 539 - pldm_pdr_get_record_count() 540 - pldm_pdr_get_record_handle() 541 - pldm_pdr_get_repo_size() 542 - pldm_pdr_record_is_remote() 543 5449. pdr: pldm_entity_node_get_remote_container_id() is a trivial accessor 54510. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Exit early on NULL arguments 54611. pdr: pldm_entity_association_tree_init(): Return NULL on failed alloc 54712. pdr: pldm_entity_association_tree_visit(): Document preconditions 54813. pdr: pldm_entity_association_tree_visit(): Exit early on failure 54914. pdr: pldm_entity_association_tree_destroy(): Exit early on bad argument 55015. pdr: pldm_entity_get_num_children(): Return zero for invalid arguments 55116. pdr: pldm_is_current_parent_child(): Return false for invalid arguments 55217. pdr: pldm_entity_association_pdr_add(): Exit early on bad arguments 55318. pdr: pldm_find_entity_ref_in_tree(): Exit early on bad arguments 55419. pdr: pldm_entity_association_tree_find(): Early exit on bad arguments 55520. pdr: pldm_entity_association_tree_destroy_root(): Exit early on bad arg 55621. pdr: pldm_entity_association_pdr_extract(): Early exit on bad arguments 55722. pdr: pldm_entity_association_pdr_extract(): Assign out params at exit 55823. pdr: pldm_entity_get_num_children(): Don't return invalid values 55924. libpldm: Lift or remove asserts where a subsequent check exists 560 561### Deprecated 562 5631. pldm_bios_table_attr_entry_integer_encode() 564 565 Migrate to pldm_bios_table_attr_entry_integer_encode_check() 566 5672. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_enum() 568 569 Migrate to pldm_bios_table_attr_value_entry_encode_enum_check() 570 5713. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_string() 572 573 Migrate to pldm_bios_table_attr_value_entry_encode_string_check() 574 5754. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_integer() 576 577 Migrate to pldm_bios_table_attr_value_entry_encode_integer_check() 578 5795. pdr: Deprecate is_present() 580 581 There should be no users of this symbol. If you are a user, you should figure 582 out how to stop, or get in touch. This symbol will be marked static the 583 release after deprecation. 584 5856. pdr: Deprecate find_entity_ref_in_tree() 586 587 There should be no users of this symbol. If you are a user, you should figure 588 out how to stop, or get in touch. This symbol will be marked static the 589 release after deprecation. 590 5917. pdr: Deprecate entity_association_tree_find() 592 593 There should be no users of this symbol. If you are a user, you should figure 594 out how to stop, or get in touch. This symbol will be marked static the 595 release after deprecation. 596 5978. bios_table: Stabilise pldm_bios_table_append_pad_checksum_check() 598 599 pldm_bios_table_append_pad_checksum() is deprecated by this change. Users of 600 pldm_bios_table_append_pad_checksum() should migrate to 601 pldm_bios_table_append_pad_checksum_check() 602 6039. fru: Stabilise get_fru_record_by_option_check() 604 605 get_fru_record_by_option() is deprecated by this change. Users of 606 get_fru_record_by_option() should migrate to get_fru_record_by_option_check() 607 60810. pdr: Stabilise pldm_entity_association_pdr_add_from_node_check() 609 610 pldm_entity_association_pdr_add_from_node() is deprecated by this change. 611 Users of pldm_entity_association_pdr_add_from_node() should migrate to 612 pldm_entity_association_pdr_add_from_node_check() 613 61411. pdr: Stabilise pldm_pdr_add_check() 615 616 pldm_pdr_add() is deprecated by this change. Users of pldm_pdr_add() should 617 migrate to pldm_pdr_add_check() 618 61912. pdr: Stabilise pldm_pdr_add_fru_record_set_check() 620 621 pldm_pdr_add_fru_record_set() is deprecated by this change. Users of 622 pldm_pdr_add_fru_record_set() should migrate to 623 pldm_pdr_add_fru_record_set_check() 624 625### Removed 626 6271. bios_table: Remove deprecated APIs sanitized by assert(): 628 629 - pldm_bios_table_string_entry_encode() 630 - pldm_bios_table_string_entry_decode_string() 631 - pldm_bios_table_attr_entry_enum_encode() 632 - pldm_bios_table_attr_entry_enum_decode_pv_num() 633 - pldm_bios_table_attr_entry_enum_decode_def_num() 634 - pldm_bios_table_attr_entry_enum_decode_pv_hdls() 635 - pldm_bios_table_attr_entry_string_encode() 636 - pldm_bios_table_attr_entry_string_decode_def_string_length() 637 638### Fixed 639 6401. pdr: Return success for pldm_pdr_find_child_container_id_range_exclude() API 6412. pdr: Rework pldm_pdr_find_container_id_range_exclude() API 6423. transport: mctp-demux: Don't test socket for non-zero value 6434. requester: Return PLDM_REQUESTER_OPEN_FAIL from pldm_open() on error 6445. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Document reality of return 6456. transport: Fix possible NULL ptr deref in pldm_socket_sndbuf_init() 6467. abi: Update to remove pldm_close() from reference dumps 6478. bios_table: Annotate pldm_bios_table_attr_value_entry_encode_integer() 648 649## [0.3.0] - 2023-06-23 650 651### Added 652 6531. Add encode/decode pldmMessagePollEvent data 6542. README: Add a section on working with libpldm 6553. pdr: Introduce remote_container_id and associated APIs 6564. pdr: Add APIs for creating and locating remote PDRs 6575. pdr: Add pldm_pdr_find_last_in_range() 6586. pdr: Add pldm_entity_association_pdr_add_from_node_with_record_handle() 6597. pdr: Add pldm_pdr_find_container_id_range_exclude() 660 661### Changed 662 6631. include: Move installed transport.h under libpldm/ 6642. libpldm: Explicit deprecated, stable and testing ABI classes 6653. meson: Reduce strength of oem-ibm requirements from enabled to allowed 666 667 The `oem-ibm` feature is now enabled by the default meson configuration, for 668 CI purposes. `oem-ibm` is still disabled by default in the `libpldm` bitbake 669 recipe: 670 671 <https://github.com/openbmc/openbmc/blob/master/meta-phosphor/recipes-phosphor/libpldm/libpldm_git.bb#L10> 672 673 To disable `oem-ibm` in your development builds, pass `-Doem-ibm=disabled` 674 when invoking `meson setup` 675 6764. bios_table: Relax pldm_bios_table_string_entry_decode_string_check() 6775. bios_table: Relax pldm_bios_table_attr_entry_enum_decode_pv_hdls_check() 678 679### Deprecated 680 6811. bios_table: Deprecate APIs with arguments sanitized using assert() 682 683 C provides enough foot-guns without us encoding them into library APIs. 684 Specifically, deprecate the following in favour of their `*_check()` variants 685 which ensure assertions won't fail or otherwise invoke UB: 686 687 - pldm_bios_table_string_entry_encode() 688 - pldm_bios_table_string_entry_decode_string() 689 - pldm_bios_table_attr_entry_enum_encode() 690 - pldm_bios_table_attr_entry_enum_decode_pv_num() 691 - pldm_bios_table_attr_entry_enum_decode_def_num() 692 - pldm_bios_table_attr_entry_enum_decode_pv_hdls() 693 - pldm_bios_table_attr_entry_string_encode() 694 - pldm_bios_table_attr_entry_string_decode_def_string_length() 695 696### Removed 697 6981. libpldm: Remove the requester-api option 699 700### Fixed 701 7021. requester: Make pldm_open() return existing fd 7032. transport: Prevent sticking in waiting for response 7043. transport: Match on response in pldm_transport_send_recv_msg() 7054. requester: Add check before accessing hdr in pldm_recv() 7065. bios_table: pldm_bios_table_attr_entry_string_info_check() NULL deref 707