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 35### Fixed 36 371. dsp: platform: Fix location of closing paren in overflow detection 382. libpldm: Install api header, update changelog 39 40## [0.10.0] 2024-11-01 41 42### Added 43 441. oem: meta: Add decode_oem_meta_file_io_write_req() 452. oem: meta: Add decode_oem_meta_file_io_read_req() 463. oem: meta: Add encode_oem_meta_file_io_read_resp() 474. pdr: Add pldm_entity_association_pdr_remove_contained_entity() 485. pdr: Add pldm_pdr_remove_fru_record_set_by_rsi() 496. pldm_entity_association_tree_copy_root_check() 507. oem: ibm: Add topology related state set and enum 51 528. base: Add size and buffer macros for struct pldm_msg 53 54 Together these macros reduce the need for use of reinterpret_cast<>() in C++. 55 569. entity: Add new entity types from DSP0249 v1.3.0 5710. stateset: Add new state sets from DSP0249 v1.3.0 58 59### Changed 60 611. dsp: bios_table: Null check for pldm_bios_table_iter_is_end() 62 63 pldm_bios_table_iter_is_end() now returns true if the provided argument is 64 NULL. 65 662. Register assignment for parameters of a number of APIs changed with increased 67 scrutiny on their implementations. 68 69 - `decode_entity_auxiliary_names_pdr()` 70 - `decode_get_state_sensor_readings_resp()` 71 - `decode_oem_meta_file_io_req()` 72 - `decode_platform_event_message_req()` 73 - `decode_platform_event_message_resp()` 74 - `decode_sensor_op_data()` 75 - `encode_get_state_effecter_states_resp()` 76 - `encode_state_effecter_pdr()` 77 - `encode_state_sensor_pdr()` 78 - `pldm_bios_table_append_pad_checksum()` 79 - `pldm_bios_table_attr_value_entry_encode_enum()` 80 - `pldm_bios_table_attr_value_entry_encode_string()` 81 - `pldm_pdr_find_record()` 82 - `pldm_pdr_get_next_record()` 83 843. platform: Support PLDM_CPER_EVENT in encode_platform_event_message_req() 85 864. dsp: firmware_update: Bounds check 87 decode_downstream_device_parameter_table_entry_versions() 88 89 The additional bounds-checking required the addition of further length 90 parameters. 91 92### Deprecated 93 941. oem: meta: Deprecate `decode_oem_meta_file_io_req()` 95 96 Users should switch to `decode_oem_meta_file_io_write_req()`. Modify this 97 function to make it safer. 98 99 Modification: 100 101 - The meaning of the returned result. 102 - Change parameters from individual pointers to a struct. 103 - Check the length provided in the message won't exceed the buffer. 104 1052. pldm_entity_association_tree_copy_root() 106 107 The implementation allocates, but gives no indication to the caller if an 108 allocation (and hence the copy) has failed. Users should migrate to 109 pldm_entity_association_tree_copy_root_check(). 110 1113. The following APIs are deprecated as unsafe due to various unfixable CWE 112 violations: 113 114 - [CWE-129: Improper Validation of Array Index](https://cwe.mitre.org/data/definitions/129.html) 115 116 - `encode_get_bios_current_value_by_handle_resp()` 117 - `encode_get_bios_table_resp()` 118 - `encode_get_file_table_resp()` 119 - `encode_get_version_resp()` 120 - `pldm_bios_table_attr_entry_enum_decode_def_indices()` 121 - `pldm_bios_table_attr_entry_enum_decode_def_num()` 122 - `pldm_bios_table_attr_find_by_handle()` 123 - `pldm_bios_table_attr_find_by_string_handle()` 124 - `pldm_bios_table_attr_value_find_by_handle()` 125 - `pldm_bios_table_iter_create()` 126 - `pldm_bios_table_iter_is_end()` 127 - `pldm_bios_table_string_find_by_handle()` 128 - `pldm_bios_table_string_find_by_string()` 129 130 - [CWE-617: Reachable Assertion](https://cwe.mitre.org/data/definitions/617.html) 131 132 - `pldm_entity_association_tree_copy_root()` 133 134 - [CWE-789: Memory Allocation with Excessive Size Value](https://cwe.mitre.org/data/definitions/789.html) 135 136 - `decode_oem_meta_file_io_req()` 137 138 - [CWE-823: Use of Out-of-range Pointer Offset](https://cwe.mitre.org/data/definitions/823.html) 139 - `encode_fru_record()` 140 - `encode_get_pdr_resp()` 141 - `pldm_bios_table_attr_entry_enum_encode_length()` 142 143### Removed 144 1451. Deprecated functions with the `_check` suffix 146 147 - `get_fru_record_by_option_check()` 148 - `pldm_bios_table_append_pad_checksum_check()` 149 - `pldm_bios_table_attr_entry_enum_decode_def_num_check()` 150 - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()` 151 - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()` 152 - `pldm_bios_table_attr_entry_enum_encode_check()` 153 - `pldm_bios_table_attr_entry_integer_encode_check()` 154 - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()` 155 - `pldm_bios_table_attr_entry_string_encode_check()` 156 - `pldm_bios_table_attr_value_entry_encode_enum_check()` 157 - `pldm_bios_table_attr_value_entry_encode_integer_check()` 158 - `pldm_bios_table_attr_value_entry_encode_string_check()` 159 - `pldm_bios_table_string_entry_decode_string_check()` 160 - `pldm_bios_table_string_entry_encode_check()` 161 - `pldm_entity_association_pdr_add_check()` 162 - `pldm_entity_association_pdr_add_from_node_check()` 163 - `pldm_pdr_add_check()` 164 - `pldm_pdr_add_fru_record_set_check()` 165 166### Fixed 167 1681. dsp: bios_table: Null check for pldm_bios_table_iter_is_end() 169 170 Avoid a caller-controlled NULL pointer dereference in the library 171 implementation. 172 1732. platform: fix encode/decode_poll_for_platform_event_message_req 174 175 Update checking of `TransferOperationFlag` and `eventIDToAcknowledge` to 176 follow spec. 177 1783. platform: Fix checking `eventIDToAcknowledge` 179 180 As the event receiver sends `PollForPlatformEventMessage` with the 181 `tranferFlag` is `AcknowledgementOnly`, the value `eventIDToAcknowledge` 182 should be the previously retrieved eventID (from the PLDM terminus). 183 1844. dsp: platform: Prevent overflow of arithmetic on event_data_length 1855. dsp: platform: Bounds check encode_sensor_state_pdr() 1866. dsp: platform: Bounds check encode_state_effecter_pdr() 1877. dsp: pdr: Bounds check pldm_entity_association_pdr_extract() 1888. dsp: bios_table: Bounds check pldm_bios_table_append_pad_checksum() 1899. dsp: bios_table: Bounds check 190 pldm_bios_table_attr_value_entry_encode_string() 19110. dsp: bios_table: Bounds check pldm_bios_table_attr_value_entry_encode_enum() 19211. dsp: firmware_update: Bounds check 193 decode_downstream_device_parameter_table_entry_versions() 19412. oem: ibm: platform: Bounds check encode_bios_attribute_update_event_req() 19513. dsp: fru: Bounds check encode_get_fru_record_by_option_resp() 19614. dsp: fru: Bounds check encode_fru_record() 19715. dsp: bios: Bounds check encode_set_bios_table_req() 19816. dsp: bios: Bounds check encode_set_bios_attribute_current_value_req() 19917. dsp: bios_table: Bounds check pldm_bios_table_string_entry_encode() 20018. dsp: pdr: Rework test in pldm_entity_association_pdr_extract() 20119. dsp: platform: Fix decode_set_event_receiver_req() 202 203## [0.9.1] - 2024-09-07 204 205### Changed 206 2071. Moved evolutions intended for v0.9.0 into place 208 209 Evolutions for the release have been moved from `evolutions/current` to 210 `evolutions/v0.9.1`. Library users can apply them to migrate off of 211 deprecated APIs. 212 213## [0.9.0] - 2024-09-07 214 215### Added 216 2171. base: Define macros for reserved TIDs 2182. pdr: Add pldm_entity_association_pdr_add_contained_entity_to_remote_pdr() 2193. pdr: Add pldm_entity_association_pdr_create_new() 2204. platform: Define macros for the responded transferflags 2215. pdr: Add pldm_pdr_get_terminus_handle() API 2226. pdr: Add related decode_entity_auxiliary_names_pdr() APIs 2237. fw_update: Add encode req & decode resp for get_downstream_fw_params 2248. platform: Add decode_pldm_platform_cper_event() API 2259. decode_get_pdr_repository_info_resp_safe() 226 227 Replaces decode_get_pdr_repository_info_resp() as discussed in the 228 `Deprecated` section below 229 23010. decode_get_pdr_resp_safe() 231 232 Replaces decode_get_pdr_resp() as discussed in the `Deprecated` section 233 below 234 235### Changed 236 2371. pdr: Stabilise related decode_entity_auxiliary_names_pdr() APIs 2382. platform: Rework decode/encode_pldm_message_poll_event_data() APIs 2393. platform: Stabilise decode_pldm_message_poll_event_data() APIs 2404. ABI break for decode_sensor_op_data() 241 242 Applying LIBPLDM_CC_NONNULL to the internal msgbuf APIs caused 243 abi-compliance-checker to flag a change in the register containing the 244 parameter `previous_op_state`. 245 2465. platform: Stabilise decode_pldm_platform_cper_event() API 2476. oem: meta: Stabilise decode_oem_meta_file_io_write_req() API 2487. oem: meta: Stabilise decode_oem_meta_file_io_read_req() API 2498. oem: meta: Stabilise encode_oem_meta_file_io_read_resp() API 250 251### Deprecated 252 2531. Rename and deprecate functions with the `_check` suffix 254 255 All library function return values always need to be checked. The `_check` 256 suffix is redundant, so remove it. Migration to the non-deprecated 257 equivalents without the `_check` suffix can be performed using 258 `scripts/ apply-renames` and the [clang-rename][] configurations under 259 `evolutions/` 260 261 The deprecated functions: 262 263 - `get_fru_record_by_option_check()` 264 - `pldm_bios_table_append_pad_checksum_check()` 265 - `pldm_bios_table_attr_entry_enum_decode_def_num_check()` 266 - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()` 267 - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()` 268 - `pldm_bios_table_attr_entry_enum_encode_check()` 269 - `pldm_bios_table_attr_entry_integer_encode_check()` 270 - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()` 271 - `pldm_bios_table_attr_entry_string_encode_check()` 272 - `pldm_bios_table_attr_value_entry_encode_enum_check()` 273 - `pldm_bios_table_attr_value_entry_encode_integer_check()` 274 - `pldm_bios_table_attr_value_entry_encode_string_check()` 275 - `pldm_bios_table_string_entry_decode_string_check()` 276 - `pldm_bios_table_string_entry_encode_check()` 277 - `pldm_entity_association_pdr_add_check()` 278 - `pldm_entity_association_pdr_add_from_node_check()` 279 - `pldm_pdr_add_check()` 280 - `pldm_pdr_add_fru_record_set_check()` 281 282[clang-rename]: https://clang.llvm.org/extra/clang-rename.html 283 2842. `decode_get_pdr_repository_info_resp()` 285 286 Users should move to `decode_get_pdr_repository_info_resp_safe()` which 287 eliminates the opportunity for buffer overruns when extracting objects from 288 the message. 289 2903. `decode_get_pdr_resp()` 291 292 Users should move to `decode_get_pdr_resp_safe()` which reduces the 293 invocation tedium and improves memory safety over `decode_get_pdr_resp()`. 294 295### Removed 296 2971. IBM OEM header compatibility symlinks. 298 299 Anyone left using the deprecated paths can migrate using the coccinelle patch 300 at `evolutions/current/oem-ibm-header-compat.cocci`. 301 302### Fixed 303 3041. requester: instance-id: Release read lock on conflict 3052. pdr: Error propagation for 306 pldm_entity_association_pdr_add_from_node_with_record_handle() 307 308## [0.8.0] - 2024-05-23 309 310### Added 311 3121. base: Provide pldm_msg_hdr_correlate_response() 3132. transport: af-mctp: Add pldm_transport_af_mctp_bind() 3143. oem: ibm: Add chapdata file type support 3154. base: Added PLDM_SMBIOS & PLDM_RDE message types 3165. oem: meta: Add decode_oem_meta_file_io_req() 3176. state-set: Add all state set values to system power state enum as per DSP0249 3187. platform: Add alias members to the enum 319 pldm_pdr_repository_chg_event_change_record_event_data_operation. 320 321 enum constants with inconsistent names are deprecated with this change. 322 remove old inconsistent enum members after backward compatibility cleanup is 323 done 324 3258. oem-ibm: Alias `pldm_oem_ibm_fru_field_type` members as `PLDM_OEM_IBM_*` 3269. oem: ibm: Add Firmware Update Access Key(UAK) as a FRU field type 32710. platform: Add 3 PDR type enum for Redfish Device Enablement per 328 DSP0248_1.2.0 32911. state_set: Add CONNECTED and DISCONNECTED enum for Link State set 33012. entity: Add enum for Network Interface Connectors and Network Ports 331 Connection Types 33213. pdr: Add decode_numeric_effecter_pdr_data() 33314. oem: ibm: Support for the Real SAI entity id 33415. fw_update: Add encode req & decode resp for query_downstream_devices 33516. fw_update: Add encode req & decode resp for query_downstream_identifiers 33617. platform: Add support for GetStateEffecterStates command 337 338### Changed 339 3401. base: Stabilise pldm_msg_hdr_correlate_response() 3412. transport: af-mctp: Stabilise pldm_transport_af_mctp_bind() 3423. libpldm: Fix header use 3434. libpldm: More fixes for header use 3445. pdr: Stabilise pldm_pdr_find_last_in_range() API 3456. pdr: Stabilise pldm_entity_association_pdr_add_from_node_with_record_handle() 3467. oem: meta: stabilise decode_oem_meta_file_io_req() 3478. pdr: pldm_entity_association_tree_copy_root(): Document preconditions 348 349### Deprecated 350 3511. Deprecate `pldm_oem_ibm_fru_field_type` members that that are not prefixed 352 with `PLDM_OEM_IBM_` 353 354### Fixed 355 3561. libpldm: Rationalise the local and installed path of pldm.h 3572. pdr: Assign record_handle in entity_association_pdr_add_children() 3583. msgbuf: Require sensor data enum in pldm_msgbuf_extract_sensor_value() 3594. pdr: Remove redundant constant for minimum numeric sensor PDR length 3605. tests: oem: meta: Fix fileio use of msgbuf 361 362## [0.7.0] - 2023-08-29 363 364### Added 365 3661. state-set: Add new enum for Operational Fault Status enum 367 368### Changed 369 3701. transport: Match specified metadata in pldm_transport_send_recv_msg() 3712. transport: mctp-demux: Drop ABI annotation for internal symbols 3723. transport: Stabilise core transport and implementation APIs 373 374 This stabilisation covers the following headers and functions: 375 376 - libpldm/transport.h 377 378 - pldm_transport_poll() 379 - pldm_transport_send_msg() 380 - pldm_transport_recv_msg() 381 - pldm_transport_send_recv_msg() 382 383 - libpldm/transport/af-mctp.h 384 385 - pldm_transport_af_mctp_init() 386 - pldm_transport_af_mctp_destroy() 387 - pldm_transport_af_mctp_core() 388 - pldm_transport_af_mctp_init_pollfd() 389 - pldm_transport_af_mctp_map_tid() 390 - pldm_transport_af_mctp_unmap_tid() 391 392 - libpldm/transport/mctp-demux.h 393 - pldm_transport_mctp_demux_init() 394 - pldm_transport_mctp_demux_destroy() 395 - pldm_transport_mctp_demux_core() 396 - pldm_transport_mctp_demux_init_pollfd() 397 - pldm_transport_mctp_demux_map_tid() 398 - pldm_transport_mctp_demux_unmap_tid() 399 400### Deprecated 401 4021. All the existing "requester" APIs from `libpldm/pldm.h` (also known as 403 `libpldm/requester/pldm.h`): 404 405 - pldm_open() 406 - pldm_send_recv() 407 - pldm_send() 408 - pldm_recv() 409 - pldm_recv_any() 410 - pldm_close() 411 412 Users should migrate to the newer "transport" APIs instead. 413 414## Fixed 415 4161. tests: Exclude transport tests when build excludes testing ABIs 4172. abi: Capture deprecation of pldm_close() 418 419## [0.6.0] - 2023-08-22 420 421### Changed 422 4231. pdr: Avoid ID overflow in pldm_entity_association_tree_add_entity() 4242. meson: Apply `b_ndebug=if-release` by default 4253. pdr : Stabilize pldm_entity_association_tree_add_entity() 4264. pdr: Stabilise pldm_entity_association_tree_find_with_locality() 4275. pdr: Stabilize pldm_entity_node_get_remote_container_id() 4286. transport: af-mctp: Assign out-params on success in \*\_recv() 4297. transport: Generalise the pldm_transport_recv_msg() API 430 431### Removed 432 4331. pdr: Remove pldm_entity_association_pdr_add() 4342. state-set: Remove enum pldm_state_set_operational_fault_status_values 435 436### Fixed 437 4381. transport: register init_pollfd callback for af-mctp 4392. transport: fix init_pollfd function parameter 4403. transport: Fix doxygen and variables for send and recv functions 4414. transport: af-mctp: Ensure malloc() succeeds in \*\_recv() 442 443## [0.5.0] - 2023-08-09 444 445### Added 446 4471. pdr: Introduce pldm_entity_association_pdr_add_check() 448 449### Changed 450 4511. pdr: Allow record_handle to be NULL for pldm_pdr_add_check() 4522. transport: pldm_transport_poll(): Adjust return value semantics 4533. transport: free un-wanted responses in pldm_transport_send_recv_msg() 454 455### Deprecated 456 4571. state-set: Enum pldm_state_set_operational_fault_status_values 458 459 The enum operational_fault_status is defined with wrong members and will 460 eventually be replaced with the correct members. Any uses of 461 pldm_state_set_operational_fault_status_values members should move to 462 equivalent pldm_state_set_operational_stress_status_values members if needed. 463 4642. platform: Struct field name in fru_record_set PDR 465 466 References to entity_instance_num should be changed to entity_instance 467 4683. platform: Struct field name in numeric sensor value PDR 469 470 References to entity_instance_num should be changed to entity_instance 471 472### Removed 473 4741. bios_table: Remove pldm_bios_table_attr_entry_integer_encode_length() 4752. bios_table: Remove pldm_bios_table_attr_value_entry_encode_enum() 4763. bios_table: Remove pldm_bios_table_attr_value_entry_encode_string() 4774. bios_table: Remove pldm_bios_table_attr_value_entry_encode_integer() 4785. bios_table: Remove pldm_bios_table_append_pad_checksum() 4796. fru: Remove get_fru_record_by_option() 4807. pdr: Make is_present() static 4818. pdr: Remove pldm_pdr_add() 4829. pdr: Remove pldm_pdr_add_fru_record_set() 48310. pdr: Remove pldm_entity_association_pdr_add_from_node() 48411. pdr: Make find_entity_ref_in_tree() static 48512. pdr: Make entity_association_tree_find() static 486 487### Fixed 488 4891. requester: Fix response buffer cast in pldm_send_recv() 4902. pdr: Hoist record handle overflow test to avoid memory leak 4913. transport: Correct comparison in while loop condition 492 493## [0.4.0] - 2023-07-14 494 495### Added 496 4971. bios_table: Introduce pldm_bios_table_append_pad_checksum_check() 4982. fru: Introduce get_fru_record_by_option_check() 4993. pdr: Introduce pldm_entity_association_pdr_add_from_node_check() 5004. pdr: Introduce pldm_pdr_add_check() 5015. pdr: Introduce pldm_pdr_add_fru_record_set_check() 502 503### Changed 504 5051. requester: Mark pldm_close() as LIBPLDM_ABI_TESTING 5062. requester: Expose pldm_close() in header 5073. bios_table: pldm_bios_table_string_entry_encode_check(): Handle overflow 5084. bios_table: pldm_bios_table_iter_create(): Return NULL on failed alloc 5095. bios_table: pldm_bios_table_iter_next(): Invalid entry halts iteration 5106. pdr: pldm_pdr_init(): Return NULL on allocation failure 5117. pdr: pldm_pdr_destroy(): Exit early if repo is NULL 5128. pdr: Document preconditions for trivial accessor functions 513 514 A trivial accessor function is one that exposes properties of an object in a 515 way can't result in an error, beyond passing an invalid argument to the 516 function. For APIs meeting this definition we define a precondition that 517 struct pointers must point to valid objects to avoid polluting the function 518 prototypes. The following APIs now have this precondition explicitly defined: 519 520 - pldm_entity_extract() 521 - pldm_entity_get_parent() 522 - pldm_entity_is_exist_parent() 523 - pldm_entity_is_node_parent() 524 - pldm_is_current_parent_child 525 - pldm_is_empty_entity_assoc_tree() 526 - pldm_pdr_get_record_count() 527 - pldm_pdr_get_record_handle() 528 - pldm_pdr_get_repo_size() 529 - pldm_pdr_record_is_remote() 530 5319. pdr: pldm_entity_node_get_remote_container_id() is a trivial accessor 53210. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Exit early on NULL arguments 53311. pdr: pldm_entity_association_tree_init(): Return NULL on failed alloc 53412. pdr: pldm_entity_association_tree_visit(): Document preconditions 53513. pdr: pldm_entity_association_tree_visit(): Exit early on failure 53614. pdr: pldm_entity_association_tree_destroy(): Exit early on bad argument 53715. pdr: pldm_entity_get_num_children(): Return zero for invalid arguments 53816. pdr: pldm_is_current_parent_child(): Return false for invalid arguments 53917. pdr: pldm_entity_association_pdr_add(): Exit early on bad arguments 54018. pdr: pldm_find_entity_ref_in_tree(): Exit early on bad arguments 54119. pdr: pldm_entity_association_tree_find(): Early exit on bad arguments 54220. pdr: pldm_entity_association_tree_destroy_root(): Exit early on bad arg 54321. pdr: pldm_entity_association_pdr_extract(): Early exit on bad arguments 54422. pdr: pldm_entity_association_pdr_extract(): Assign out params at exit 54523. pdr: pldm_entity_get_num_children(): Don't return invalid values 54624. libpldm: Lift or remove asserts where a subsequent check exists 547 548### Deprecated 549 5501. pldm_bios_table_attr_entry_integer_encode() 551 552 Migrate to pldm_bios_table_attr_entry_integer_encode_check() 553 5542. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_enum() 555 556 Migrate to pldm_bios_table_attr_value_entry_encode_enum_check() 557 5583. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_string() 559 560 Migrate to pldm_bios_table_attr_value_entry_encode_string_check() 561 5624. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_integer() 563 564 Migrate to pldm_bios_table_attr_value_entry_encode_integer_check() 565 5665. pdr: Deprecate is_present() 567 568 There should be no users of this symbol. If you are a user, you should figure 569 out how to stop, or get in touch. This symbol will be marked static the 570 release after deprecation. 571 5726. pdr: Deprecate find_entity_ref_in_tree() 573 574 There should be no users of this symbol. If you are a user, you should figure 575 out how to stop, or get in touch. This symbol will be marked static the 576 release after deprecation. 577 5787. pdr: Deprecate entity_association_tree_find() 579 580 There should be no users of this symbol. If you are a user, you should figure 581 out how to stop, or get in touch. This symbol will be marked static the 582 release after deprecation. 583 5848. bios_table: Stabilise pldm_bios_table_append_pad_checksum_check() 585 586 pldm_bios_table_append_pad_checksum() is deprecated by this change. Users of 587 pldm_bios_table_append_pad_checksum() should migrate to 588 pldm_bios_table_append_pad_checksum_check() 589 5909. fru: Stabilise get_fru_record_by_option_check() 591 592 get_fru_record_by_option() is deprecated by this change. Users of 593 get_fru_record_by_option() should migrate to get_fru_record_by_option_check() 594 59510. pdr: Stabilise pldm_entity_association_pdr_add_from_node_check() 596 597 pldm_entity_association_pdr_add_from_node() is deprecated by this change. 598 Users of pldm_entity_association_pdr_add_from_node() should migrate to 599 pldm_entity_association_pdr_add_from_node_check() 600 60111. pdr: Stabilise pldm_pdr_add_check() 602 603 pldm_pdr_add() is deprecated by this change. Users of pldm_pdr_add() should 604 migrate to pldm_pdr_add_check() 605 60612. pdr: Stabilise pldm_pdr_add_fru_record_set_check() 607 608 pldm_pdr_add_fru_record_set() is deprecated by this change. Users of 609 pldm_pdr_add_fru_record_set() should migrate to 610 pldm_pdr_add_fru_record_set_check() 611 612### Removed 613 6141. bios_table: Remove deprecated APIs sanitized by assert(): 615 616 - pldm_bios_table_string_entry_encode() 617 - pldm_bios_table_string_entry_decode_string() 618 - pldm_bios_table_attr_entry_enum_encode() 619 - pldm_bios_table_attr_entry_enum_decode_pv_num() 620 - pldm_bios_table_attr_entry_enum_decode_def_num() 621 - pldm_bios_table_attr_entry_enum_decode_pv_hdls() 622 - pldm_bios_table_attr_entry_string_encode() 623 - pldm_bios_table_attr_entry_string_decode_def_string_length() 624 625### Fixed 626 6271. pdr: Return success for pldm_pdr_find_child_container_id_range_exclude() API 6282. pdr: Rework pldm_pdr_find_container_id_range_exclude() API 6293. transport: mctp-demux: Don't test socket for non-zero value 6304. requester: Return PLDM_REQUESTER_OPEN_FAIL from pldm_open() on error 6315. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Document reality of return 6326. transport: Fix possible NULL ptr deref in pldm_socket_sndbuf_init() 6337. abi: Update to remove pldm_close() from reference dumps 6348. bios_table: Annotate pldm_bios_table_attr_value_entry_encode_integer() 635 636## [0.3.0] - 2023-06-23 637 638### Added 639 6401. Add encode/decode pldmMessagePollEvent data 6412. README: Add a section on working with libpldm 6423. pdr: Introduce remote_container_id and associated APIs 6434. pdr: Add APIs for creating and locating remote PDRs 6445. pdr: Add pldm_pdr_find_last_in_range() 6456. pdr: Add pldm_entity_association_pdr_add_from_node_with_record_handle() 6467. pdr: Add pldm_pdr_find_container_id_range_exclude() 647 648### Changed 649 6501. include: Move installed transport.h under libpldm/ 6512. libpldm: Explicit deprecated, stable and testing ABI classes 6523. meson: Reduce strength of oem-ibm requirements from enabled to allowed 653 654 The `oem-ibm` feature is now enabled by the default meson configuration, for 655 CI purposes. `oem-ibm` is still disabled by default in the `libpldm` bitbake 656 recipe: 657 658 <https://github.com/openbmc/openbmc/blob/master/meta-phosphor/recipes-phosphor/libpldm/libpldm_git.bb#L10> 659 660 To disable `oem-ibm` in your development builds, pass `-Doem-ibm=disabled` 661 when invoking `meson setup` 662 6634. bios_table: Relax pldm_bios_table_string_entry_decode_string_check() 6645. bios_table: Relax pldm_bios_table_attr_entry_enum_decode_pv_hdls_check() 665 666### Deprecated 667 6681. bios_table: Deprecate APIs with arguments sanitized using assert() 669 670 C provides enough foot-guns without us encoding them into library APIs. 671 Specifically, deprecate the following in favour of their `*_check()` variants 672 which ensure assertions won't fail or otherwise invoke UB: 673 674 - pldm_bios_table_string_entry_encode() 675 - pldm_bios_table_string_entry_decode_string() 676 - pldm_bios_table_attr_entry_enum_encode() 677 - pldm_bios_table_attr_entry_enum_decode_pv_num() 678 - pldm_bios_table_attr_entry_enum_decode_def_num() 679 - pldm_bios_table_attr_entry_enum_decode_pv_hdls() 680 - pldm_bios_table_attr_entry_string_encode() 681 - pldm_bios_table_attr_entry_string_decode_def_string_length() 682 683### Removed 684 6851. libpldm: Remove the requester-api option 686 687### Fixed 688 6891. requester: Make pldm_open() return existing fd 6902. transport: Prevent sticking in waiting for response 6913. transport: Match on response in pldm_transport_send_recv_msg() 6924. requester: Add check before accessing hdr in pldm_recv() 6935. bios_table: pldm_bios_table_attr_entry_string_info_check() NULL deref 694