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 40### Fixed 41 421. dsp: platform: Fix location of closing paren in overflow detection 432. libpldm: Install api header, update changelog 44 45## [0.10.0] 2024-11-01 46 47### Added 48 491. oem: meta: Add decode_oem_meta_file_io_write_req() 502. oem: meta: Add decode_oem_meta_file_io_read_req() 513. oem: meta: Add encode_oem_meta_file_io_read_resp() 524. pdr: Add pldm_entity_association_pdr_remove_contained_entity() 535. pdr: Add pldm_pdr_remove_fru_record_set_by_rsi() 546. pldm_entity_association_tree_copy_root_check() 557. oem: ibm: Add topology related state set and enum 56 578. base: Add size and buffer macros for struct pldm_msg 58 59 Together these macros reduce the need for use of reinterpret_cast<>() in C++. 60 619. entity: Add new entity types from DSP0249 v1.3.0 6210. stateset: Add new state sets from DSP0249 v1.3.0 63 64### Changed 65 661. dsp: bios_table: Null check for pldm_bios_table_iter_is_end() 67 68 pldm_bios_table_iter_is_end() now returns true if the provided argument is 69 NULL. 70 712. Register assignment for parameters of a number of APIs changed with increased 72 scrutiny on their implementations. 73 74 - `decode_entity_auxiliary_names_pdr()` 75 - `decode_get_state_sensor_readings_resp()` 76 - `decode_oem_meta_file_io_req()` 77 - `decode_platform_event_message_req()` 78 - `decode_platform_event_message_resp()` 79 - `decode_sensor_op_data()` 80 - `encode_get_state_effecter_states_resp()` 81 - `encode_state_effecter_pdr()` 82 - `encode_state_sensor_pdr()` 83 - `pldm_bios_table_append_pad_checksum()` 84 - `pldm_bios_table_attr_value_entry_encode_enum()` 85 - `pldm_bios_table_attr_value_entry_encode_string()` 86 - `pldm_pdr_find_record()` 87 - `pldm_pdr_get_next_record()` 88 893. platform: Support PLDM_CPER_EVENT in encode_platform_event_message_req() 90 914. dsp: firmware_update: Bounds check 92 decode_downstream_device_parameter_table_entry_versions() 93 94 The additional bounds-checking required the addition of further length 95 parameters. 96 97### Deprecated 98 991. oem: meta: Deprecate `decode_oem_meta_file_io_req()` 100 101 Users should switch to `decode_oem_meta_file_io_write_req()`. Modify this 102 function to make it safer. 103 104 Modification: 105 106 - The meaning of the returned result. 107 - Change parameters from individual pointers to a struct. 108 - Check the length provided in the message won't exceed the buffer. 109 1102. pldm_entity_association_tree_copy_root() 111 112 The implementation allocates, but gives no indication to the caller if an 113 allocation (and hence the copy) has failed. Users should migrate to 114 pldm_entity_association_tree_copy_root_check(). 115 1163. The following APIs are deprecated as unsafe due to various unfixable CWE 117 violations: 118 119 - [CWE-129: Improper Validation of Array Index](https://cwe.mitre.org/data/definitions/129.html) 120 121 - `encode_get_bios_current_value_by_handle_resp()` 122 - `encode_get_bios_table_resp()` 123 - `encode_get_file_table_resp()` 124 - `encode_get_version_resp()` 125 - `pldm_bios_table_attr_entry_enum_decode_def_indices()` 126 - `pldm_bios_table_attr_entry_enum_decode_def_num()` 127 - `pldm_bios_table_attr_find_by_handle()` 128 - `pldm_bios_table_attr_find_by_string_handle()` 129 - `pldm_bios_table_attr_value_find_by_handle()` 130 - `pldm_bios_table_iter_create()` 131 - `pldm_bios_table_iter_is_end()` 132 - `pldm_bios_table_string_find_by_handle()` 133 - `pldm_bios_table_string_find_by_string()` 134 135 - [CWE-617: Reachable Assertion](https://cwe.mitre.org/data/definitions/617.html) 136 137 - `pldm_entity_association_tree_copy_root()` 138 139 - [CWE-789: Memory Allocation with Excessive Size Value](https://cwe.mitre.org/data/definitions/789.html) 140 141 - `decode_oem_meta_file_io_req()` 142 143 - [CWE-823: Use of Out-of-range Pointer Offset](https://cwe.mitre.org/data/definitions/823.html) 144 - `encode_fru_record()` 145 - `encode_get_pdr_resp()` 146 - `pldm_bios_table_attr_entry_enum_encode_length()` 147 148### Removed 149 1501. Deprecated functions with the `_check` suffix 151 152 - `get_fru_record_by_option_check()` 153 - `pldm_bios_table_append_pad_checksum_check()` 154 - `pldm_bios_table_attr_entry_enum_decode_def_num_check()` 155 - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()` 156 - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()` 157 - `pldm_bios_table_attr_entry_enum_encode_check()` 158 - `pldm_bios_table_attr_entry_integer_encode_check()` 159 - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()` 160 - `pldm_bios_table_attr_entry_string_encode_check()` 161 - `pldm_bios_table_attr_value_entry_encode_enum_check()` 162 - `pldm_bios_table_attr_value_entry_encode_integer_check()` 163 - `pldm_bios_table_attr_value_entry_encode_string_check()` 164 - `pldm_bios_table_string_entry_decode_string_check()` 165 - `pldm_bios_table_string_entry_encode_check()` 166 - `pldm_entity_association_pdr_add_check()` 167 - `pldm_entity_association_pdr_add_from_node_check()` 168 - `pldm_pdr_add_check()` 169 - `pldm_pdr_add_fru_record_set_check()` 170 171### Fixed 172 1731. dsp: bios_table: Null check for pldm_bios_table_iter_is_end() 174 175 Avoid a caller-controlled NULL pointer dereference in the library 176 implementation. 177 1782. platform: fix encode/decode_poll_for_platform_event_message_req 179 180 Update checking of `TransferOperationFlag` and `eventIDToAcknowledge` to 181 follow spec. 182 1833. platform: Fix checking `eventIDToAcknowledge` 184 185 As the event receiver sends `PollForPlatformEventMessage` with the 186 `tranferFlag` is `AcknowledgementOnly`, the value `eventIDToAcknowledge` 187 should be the previously retrieved eventID (from the PLDM terminus). 188 1894. dsp: platform: Prevent overflow of arithmetic on event_data_length 1905. dsp: platform: Bounds check encode_sensor_state_pdr() 1916. dsp: platform: Bounds check encode_state_effecter_pdr() 1927. dsp: pdr: Bounds check pldm_entity_association_pdr_extract() 1938. dsp: bios_table: Bounds check pldm_bios_table_append_pad_checksum() 1949. dsp: bios_table: Bounds check 195 pldm_bios_table_attr_value_entry_encode_string() 19610. dsp: bios_table: Bounds check pldm_bios_table_attr_value_entry_encode_enum() 19711. dsp: firmware_update: Bounds check 198 decode_downstream_device_parameter_table_entry_versions() 19912. oem: ibm: platform: Bounds check encode_bios_attribute_update_event_req() 20013. dsp: fru: Bounds check encode_get_fru_record_by_option_resp() 20114. dsp: fru: Bounds check encode_fru_record() 20215. dsp: bios: Bounds check encode_set_bios_table_req() 20316. dsp: bios: Bounds check encode_set_bios_attribute_current_value_req() 20417. dsp: bios_table: Bounds check pldm_bios_table_string_entry_encode() 20518. dsp: pdr: Rework test in pldm_entity_association_pdr_extract() 20619. dsp: platform: Fix decode_set_event_receiver_req() 207 208## [0.9.1] - 2024-09-07 209 210### Changed 211 2121. Moved evolutions intended for v0.9.0 into place 213 214 Evolutions for the release have been moved from `evolutions/current` to 215 `evolutions/v0.9.1`. Library users can apply them to migrate off of 216 deprecated APIs. 217 218## [0.9.0] - 2024-09-07 219 220### Added 221 2221. base: Define macros for reserved TIDs 2232. pdr: Add pldm_entity_association_pdr_add_contained_entity_to_remote_pdr() 2243. pdr: Add pldm_entity_association_pdr_create_new() 2254. platform: Define macros for the responded transferflags 2265. pdr: Add pldm_pdr_get_terminus_handle() API 2276. pdr: Add related decode_entity_auxiliary_names_pdr() APIs 2287. fw_update: Add encode req & decode resp for get_downstream_fw_params 2298. platform: Add decode_pldm_platform_cper_event() API 2309. decode_get_pdr_repository_info_resp_safe() 231 232 Replaces decode_get_pdr_repository_info_resp() as discussed in the 233 `Deprecated` section below 234 23510. decode_get_pdr_resp_safe() 236 237 Replaces decode_get_pdr_resp() as discussed in the `Deprecated` section 238 below 239 240### Changed 241 2421. pdr: Stabilise related decode_entity_auxiliary_names_pdr() APIs 2432. platform: Rework decode/encode_pldm_message_poll_event_data() APIs 2443. platform: Stabilise decode_pldm_message_poll_event_data() APIs 2454. ABI break for decode_sensor_op_data() 246 247 Applying LIBPLDM_CC_NONNULL to the internal msgbuf APIs caused 248 abi-compliance-checker to flag a change in the register containing the 249 parameter `previous_op_state`. 250 2515. platform: Stabilise decode_pldm_platform_cper_event() API 2526. oem: meta: Stabilise decode_oem_meta_file_io_write_req() API 2537. oem: meta: Stabilise decode_oem_meta_file_io_read_req() API 2548. oem: meta: Stabilise encode_oem_meta_file_io_read_resp() API 255 256### Deprecated 257 2581. Rename and deprecate functions with the `_check` suffix 259 260 All library function return values always need to be checked. The `_check` 261 suffix is redundant, so remove it. Migration to the non-deprecated 262 equivalents without the `_check` suffix can be performed using 263 `scripts/ apply-renames` and the [clang-rename][] configurations under 264 `evolutions/` 265 266 The deprecated functions: 267 268 - `get_fru_record_by_option_check()` 269 - `pldm_bios_table_append_pad_checksum_check()` 270 - `pldm_bios_table_attr_entry_enum_decode_def_num_check()` 271 - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()` 272 - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()` 273 - `pldm_bios_table_attr_entry_enum_encode_check()` 274 - `pldm_bios_table_attr_entry_integer_encode_check()` 275 - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()` 276 - `pldm_bios_table_attr_entry_string_encode_check()` 277 - `pldm_bios_table_attr_value_entry_encode_enum_check()` 278 - `pldm_bios_table_attr_value_entry_encode_integer_check()` 279 - `pldm_bios_table_attr_value_entry_encode_string_check()` 280 - `pldm_bios_table_string_entry_decode_string_check()` 281 - `pldm_bios_table_string_entry_encode_check()` 282 - `pldm_entity_association_pdr_add_check()` 283 - `pldm_entity_association_pdr_add_from_node_check()` 284 - `pldm_pdr_add_check()` 285 - `pldm_pdr_add_fru_record_set_check()` 286 287[clang-rename]: https://clang.llvm.org/extra/clang-rename.html 288 2892. `decode_get_pdr_repository_info_resp()` 290 291 Users should move to `decode_get_pdr_repository_info_resp_safe()` which 292 eliminates the opportunity for buffer overruns when extracting objects from 293 the message. 294 2953. `decode_get_pdr_resp()` 296 297 Users should move to `decode_get_pdr_resp_safe()` which reduces the 298 invocation tedium and improves memory safety over `decode_get_pdr_resp()`. 299 300### Removed 301 3021. IBM OEM header compatibility symlinks. 303 304 Anyone left using the deprecated paths can migrate using the coccinelle patch 305 at `evolutions/current/oem-ibm-header-compat.cocci`. 306 307### Fixed 308 3091. requester: instance-id: Release read lock on conflict 3102. pdr: Error propagation for 311 pldm_entity_association_pdr_add_from_node_with_record_handle() 312 313## [0.8.0] - 2024-05-23 314 315### Added 316 3171. base: Provide pldm_msg_hdr_correlate_response() 3182. transport: af-mctp: Add pldm_transport_af_mctp_bind() 3193. oem: ibm: Add chapdata file type support 3204. base: Added PLDM_SMBIOS & PLDM_RDE message types 3215. oem: meta: Add decode_oem_meta_file_io_req() 3226. state-set: Add all state set values to system power state enum as per DSP0249 3237. platform: Add alias members to the enum 324 pldm_pdr_repository_chg_event_change_record_event_data_operation. 325 326 enum constants with inconsistent names are deprecated with this change. 327 remove old inconsistent enum members after backward compatibility cleanup is 328 done 329 3308. oem-ibm: Alias `pldm_oem_ibm_fru_field_type` members as `PLDM_OEM_IBM_*` 3319. oem: ibm: Add Firmware Update Access Key(UAK) as a FRU field type 33210. platform: Add 3 PDR type enum for Redfish Device Enablement per 333 DSP0248_1.2.0 33411. state_set: Add CONNECTED and DISCONNECTED enum for Link State set 33512. entity: Add enum for Network Interface Connectors and Network Ports 336 Connection Types 33713. pdr: Add decode_numeric_effecter_pdr_data() 33814. oem: ibm: Support for the Real SAI entity id 33915. fw_update: Add encode req & decode resp for query_downstream_devices 34016. fw_update: Add encode req & decode resp for query_downstream_identifiers 34117. platform: Add support for GetStateEffecterStates command 342 343### Changed 344 3451. base: Stabilise pldm_msg_hdr_correlate_response() 3462. transport: af-mctp: Stabilise pldm_transport_af_mctp_bind() 3473. libpldm: Fix header use 3484. libpldm: More fixes for header use 3495. pdr: Stabilise pldm_pdr_find_last_in_range() API 3506. pdr: Stabilise pldm_entity_association_pdr_add_from_node_with_record_handle() 3517. oem: meta: stabilise decode_oem_meta_file_io_req() 3528. pdr: pldm_entity_association_tree_copy_root(): Document preconditions 353 354### Deprecated 355 3561. Deprecate `pldm_oem_ibm_fru_field_type` members that that are not prefixed 357 with `PLDM_OEM_IBM_` 358 359### Fixed 360 3611. libpldm: Rationalise the local and installed path of pldm.h 3622. pdr: Assign record_handle in entity_association_pdr_add_children() 3633. msgbuf: Require sensor data enum in pldm_msgbuf_extract_sensor_value() 3644. pdr: Remove redundant constant for minimum numeric sensor PDR length 3655. tests: oem: meta: Fix fileio use of msgbuf 366 367## [0.7.0] - 2023-08-29 368 369### Added 370 3711. state-set: Add new enum for Operational Fault Status enum 372 373### Changed 374 3751. transport: Match specified metadata in pldm_transport_send_recv_msg() 3762. transport: mctp-demux: Drop ABI annotation for internal symbols 3773. transport: Stabilise core transport and implementation APIs 378 379 This stabilisation covers the following headers and functions: 380 381 - libpldm/transport.h 382 383 - pldm_transport_poll() 384 - pldm_transport_send_msg() 385 - pldm_transport_recv_msg() 386 - pldm_transport_send_recv_msg() 387 388 - libpldm/transport/af-mctp.h 389 390 - pldm_transport_af_mctp_init() 391 - pldm_transport_af_mctp_destroy() 392 - pldm_transport_af_mctp_core() 393 - pldm_transport_af_mctp_init_pollfd() 394 - pldm_transport_af_mctp_map_tid() 395 - pldm_transport_af_mctp_unmap_tid() 396 397 - libpldm/transport/mctp-demux.h 398 - pldm_transport_mctp_demux_init() 399 - pldm_transport_mctp_demux_destroy() 400 - pldm_transport_mctp_demux_core() 401 - pldm_transport_mctp_demux_init_pollfd() 402 - pldm_transport_mctp_demux_map_tid() 403 - pldm_transport_mctp_demux_unmap_tid() 404 405### Deprecated 406 4071. All the existing "requester" APIs from `libpldm/pldm.h` (also known as 408 `libpldm/requester/pldm.h`): 409 410 - pldm_open() 411 - pldm_send_recv() 412 - pldm_send() 413 - pldm_recv() 414 - pldm_recv_any() 415 - pldm_close() 416 417 Users should migrate to the newer "transport" APIs instead. 418 419## Fixed 420 4211. tests: Exclude transport tests when build excludes testing ABIs 4222. abi: Capture deprecation of pldm_close() 423 424## [0.6.0] - 2023-08-22 425 426### Changed 427 4281. pdr: Avoid ID overflow in pldm_entity_association_tree_add_entity() 4292. meson: Apply `b_ndebug=if-release` by default 4303. pdr : Stabilize pldm_entity_association_tree_add_entity() 4314. pdr: Stabilise pldm_entity_association_tree_find_with_locality() 4325. pdr: Stabilize pldm_entity_node_get_remote_container_id() 4336. transport: af-mctp: Assign out-params on success in \*\_recv() 4347. transport: Generalise the pldm_transport_recv_msg() API 435 436### Removed 437 4381. pdr: Remove pldm_entity_association_pdr_add() 4392. state-set: Remove enum pldm_state_set_operational_fault_status_values 440 441### Fixed 442 4431. transport: register init_pollfd callback for af-mctp 4442. transport: fix init_pollfd function parameter 4453. transport: Fix doxygen and variables for send and recv functions 4464. transport: af-mctp: Ensure malloc() succeeds in \*\_recv() 447 448## [0.5.0] - 2023-08-09 449 450### Added 451 4521. pdr: Introduce pldm_entity_association_pdr_add_check() 453 454### Changed 455 4561. pdr: Allow record_handle to be NULL for pldm_pdr_add_check() 4572. transport: pldm_transport_poll(): Adjust return value semantics 4583. transport: free un-wanted responses in pldm_transport_send_recv_msg() 459 460### Deprecated 461 4621. state-set: Enum pldm_state_set_operational_fault_status_values 463 464 The enum operational_fault_status is defined with wrong members and will 465 eventually be replaced with the correct members. Any uses of 466 pldm_state_set_operational_fault_status_values members should move to 467 equivalent pldm_state_set_operational_stress_status_values members if needed. 468 4692. platform: Struct field name in fru_record_set PDR 470 471 References to entity_instance_num should be changed to entity_instance 472 4733. platform: Struct field name in numeric sensor value PDR 474 475 References to entity_instance_num should be changed to entity_instance 476 477### Removed 478 4791. bios_table: Remove pldm_bios_table_attr_entry_integer_encode_length() 4802. bios_table: Remove pldm_bios_table_attr_value_entry_encode_enum() 4813. bios_table: Remove pldm_bios_table_attr_value_entry_encode_string() 4824. bios_table: Remove pldm_bios_table_attr_value_entry_encode_integer() 4835. bios_table: Remove pldm_bios_table_append_pad_checksum() 4846. fru: Remove get_fru_record_by_option() 4857. pdr: Make is_present() static 4868. pdr: Remove pldm_pdr_add() 4879. pdr: Remove pldm_pdr_add_fru_record_set() 48810. pdr: Remove pldm_entity_association_pdr_add_from_node() 48911. pdr: Make find_entity_ref_in_tree() static 49012. pdr: Make entity_association_tree_find() static 491 492### Fixed 493 4941. requester: Fix response buffer cast in pldm_send_recv() 4952. pdr: Hoist record handle overflow test to avoid memory leak 4963. transport: Correct comparison in while loop condition 497 498## [0.4.0] - 2023-07-14 499 500### Added 501 5021. bios_table: Introduce pldm_bios_table_append_pad_checksum_check() 5032. fru: Introduce get_fru_record_by_option_check() 5043. pdr: Introduce pldm_entity_association_pdr_add_from_node_check() 5054. pdr: Introduce pldm_pdr_add_check() 5065. pdr: Introduce pldm_pdr_add_fru_record_set_check() 507 508### Changed 509 5101. requester: Mark pldm_close() as LIBPLDM_ABI_TESTING 5112. requester: Expose pldm_close() in header 5123. bios_table: pldm_bios_table_string_entry_encode_check(): Handle overflow 5134. bios_table: pldm_bios_table_iter_create(): Return NULL on failed alloc 5145. bios_table: pldm_bios_table_iter_next(): Invalid entry halts iteration 5156. pdr: pldm_pdr_init(): Return NULL on allocation failure 5167. pdr: pldm_pdr_destroy(): Exit early if repo is NULL 5178. pdr: Document preconditions for trivial accessor functions 518 519 A trivial accessor function is one that exposes properties of an object in a 520 way can't result in an error, beyond passing an invalid argument to the 521 function. For APIs meeting this definition we define a precondition that 522 struct pointers must point to valid objects to avoid polluting the function 523 prototypes. The following APIs now have this precondition explicitly defined: 524 525 - pldm_entity_extract() 526 - pldm_entity_get_parent() 527 - pldm_entity_is_exist_parent() 528 - pldm_entity_is_node_parent() 529 - pldm_is_current_parent_child 530 - pldm_is_empty_entity_assoc_tree() 531 - pldm_pdr_get_record_count() 532 - pldm_pdr_get_record_handle() 533 - pldm_pdr_get_repo_size() 534 - pldm_pdr_record_is_remote() 535 5369. pdr: pldm_entity_node_get_remote_container_id() is a trivial accessor 53710. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Exit early on NULL arguments 53811. pdr: pldm_entity_association_tree_init(): Return NULL on failed alloc 53912. pdr: pldm_entity_association_tree_visit(): Document preconditions 54013. pdr: pldm_entity_association_tree_visit(): Exit early on failure 54114. pdr: pldm_entity_association_tree_destroy(): Exit early on bad argument 54215. pdr: pldm_entity_get_num_children(): Return zero for invalid arguments 54316. pdr: pldm_is_current_parent_child(): Return false for invalid arguments 54417. pdr: pldm_entity_association_pdr_add(): Exit early on bad arguments 54518. pdr: pldm_find_entity_ref_in_tree(): Exit early on bad arguments 54619. pdr: pldm_entity_association_tree_find(): Early exit on bad arguments 54720. pdr: pldm_entity_association_tree_destroy_root(): Exit early on bad arg 54821. pdr: pldm_entity_association_pdr_extract(): Early exit on bad arguments 54922. pdr: pldm_entity_association_pdr_extract(): Assign out params at exit 55023. pdr: pldm_entity_get_num_children(): Don't return invalid values 55124. libpldm: Lift or remove asserts where a subsequent check exists 552 553### Deprecated 554 5551. pldm_bios_table_attr_entry_integer_encode() 556 557 Migrate to pldm_bios_table_attr_entry_integer_encode_check() 558 5592. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_enum() 560 561 Migrate to pldm_bios_table_attr_value_entry_encode_enum_check() 562 5633. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_string() 564 565 Migrate to pldm_bios_table_attr_value_entry_encode_string_check() 566 5674. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_integer() 568 569 Migrate to pldm_bios_table_attr_value_entry_encode_integer_check() 570 5715. pdr: Deprecate is_present() 572 573 There should be no users of this symbol. If you are a user, you should figure 574 out how to stop, or get in touch. This symbol will be marked static the 575 release after deprecation. 576 5776. pdr: Deprecate find_entity_ref_in_tree() 578 579 There should be no users of this symbol. If you are a user, you should figure 580 out how to stop, or get in touch. This symbol will be marked static the 581 release after deprecation. 582 5837. pdr: Deprecate entity_association_tree_find() 584 585 There should be no users of this symbol. If you are a user, you should figure 586 out how to stop, or get in touch. This symbol will be marked static the 587 release after deprecation. 588 5898. bios_table: Stabilise pldm_bios_table_append_pad_checksum_check() 590 591 pldm_bios_table_append_pad_checksum() is deprecated by this change. Users of 592 pldm_bios_table_append_pad_checksum() should migrate to 593 pldm_bios_table_append_pad_checksum_check() 594 5959. fru: Stabilise get_fru_record_by_option_check() 596 597 get_fru_record_by_option() is deprecated by this change. Users of 598 get_fru_record_by_option() should migrate to get_fru_record_by_option_check() 599 60010. pdr: Stabilise pldm_entity_association_pdr_add_from_node_check() 601 602 pldm_entity_association_pdr_add_from_node() is deprecated by this change. 603 Users of pldm_entity_association_pdr_add_from_node() should migrate to 604 pldm_entity_association_pdr_add_from_node_check() 605 60611. pdr: Stabilise pldm_pdr_add_check() 607 608 pldm_pdr_add() is deprecated by this change. Users of pldm_pdr_add() should 609 migrate to pldm_pdr_add_check() 610 61112. pdr: Stabilise pldm_pdr_add_fru_record_set_check() 612 613 pldm_pdr_add_fru_record_set() is deprecated by this change. Users of 614 pldm_pdr_add_fru_record_set() should migrate to 615 pldm_pdr_add_fru_record_set_check() 616 617### Removed 618 6191. bios_table: Remove deprecated APIs sanitized by assert(): 620 621 - pldm_bios_table_string_entry_encode() 622 - pldm_bios_table_string_entry_decode_string() 623 - pldm_bios_table_attr_entry_enum_encode() 624 - pldm_bios_table_attr_entry_enum_decode_pv_num() 625 - pldm_bios_table_attr_entry_enum_decode_def_num() 626 - pldm_bios_table_attr_entry_enum_decode_pv_hdls() 627 - pldm_bios_table_attr_entry_string_encode() 628 - pldm_bios_table_attr_entry_string_decode_def_string_length() 629 630### Fixed 631 6321. pdr: Return success for pldm_pdr_find_child_container_id_range_exclude() API 6332. pdr: Rework pldm_pdr_find_container_id_range_exclude() API 6343. transport: mctp-demux: Don't test socket for non-zero value 6354. requester: Return PLDM_REQUESTER_OPEN_FAIL from pldm_open() on error 6365. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Document reality of return 6376. transport: Fix possible NULL ptr deref in pldm_socket_sndbuf_init() 6387. abi: Update to remove pldm_close() from reference dumps 6398. bios_table: Annotate pldm_bios_table_attr_value_entry_encode_integer() 640 641## [0.3.0] - 2023-06-23 642 643### Added 644 6451. Add encode/decode pldmMessagePollEvent data 6462. README: Add a section on working with libpldm 6473. pdr: Introduce remote_container_id and associated APIs 6484. pdr: Add APIs for creating and locating remote PDRs 6495. pdr: Add pldm_pdr_find_last_in_range() 6506. pdr: Add pldm_entity_association_pdr_add_from_node_with_record_handle() 6517. pdr: Add pldm_pdr_find_container_id_range_exclude() 652 653### Changed 654 6551. include: Move installed transport.h under libpldm/ 6562. libpldm: Explicit deprecated, stable and testing ABI classes 6573. meson: Reduce strength of oem-ibm requirements from enabled to allowed 658 659 The `oem-ibm` feature is now enabled by the default meson configuration, for 660 CI purposes. `oem-ibm` is still disabled by default in the `libpldm` bitbake 661 recipe: 662 663 <https://github.com/openbmc/openbmc/blob/master/meta-phosphor/recipes-phosphor/libpldm/libpldm_git.bb#L10> 664 665 To disable `oem-ibm` in your development builds, pass `-Doem-ibm=disabled` 666 when invoking `meson setup` 667 6684. bios_table: Relax pldm_bios_table_string_entry_decode_string_check() 6695. bios_table: Relax pldm_bios_table_attr_entry_enum_decode_pv_hdls_check() 670 671### Deprecated 672 6731. bios_table: Deprecate APIs with arguments sanitized using assert() 674 675 C provides enough foot-guns without us encoding them into library APIs. 676 Specifically, deprecate the following in favour of their `*_check()` variants 677 which ensure assertions won't fail or otherwise invoke UB: 678 679 - pldm_bios_table_string_entry_encode() 680 - pldm_bios_table_string_entry_decode_string() 681 - pldm_bios_table_attr_entry_enum_encode() 682 - pldm_bios_table_attr_entry_enum_decode_pv_num() 683 - pldm_bios_table_attr_entry_enum_decode_def_num() 684 - pldm_bios_table_attr_entry_enum_decode_pv_hdls() 685 - pldm_bios_table_attr_entry_string_encode() 686 - pldm_bios_table_attr_entry_string_decode_def_string_length() 687 688### Removed 689 6901. libpldm: Remove the requester-api option 691 692### Fixed 693 6941. requester: Make pldm_open() return existing fd 6952. transport: Prevent sticking in waiting for response 6963. transport: Match on response in pldm_transport_send_recv_msg() 6974. requester: Add check before accessing hdr in pldm_recv() 6985. bios_table: pldm_bios_table_attr_entry_string_info_check() NULL deref 699