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## [0.11.0] 2024-12-12 21 22### Added 23 241. dsp: firmware_update: Iterators for downstream device descriptors 252. platform: add PLDM Command numbers 263. base: add PLDM Command numbers 27 28### Changed 29 301. Register assignment for parameters of `encode_state_effecter_pdr()` 31 322. dsp: firmware_update: Iterators for downstream device descriptors 33 34 The prototype for `decode_query_downstream_identifiers_resp()` was updated to 35 improve ergonomics for the iterator APIs. 36 373. meson: Specify OEM extensions in an array 38 39 `include/libpldm/meson.build` is modified, but not in ways that are 40 significant. 41 424. Return `ENOENT` rather than `ENOKEY` from 43 `pldm_pdr_find_child_container_id_index_range_exclude()` 44 455. dsp: firmware_update: Change return type of downstream device ABIs to ERRNO 46 47 Those downstream device related ABIs have not been stabilized yet, change 48 return type from PLDM Completion Code to ERRNO 49 506. dsp: firmware_update: pack decomposed parameters to struct 51 52 `encode_query_downstream_identifiers_req()` and 53 `encode_get_downstream_firmware_params_req()` 54 557. dsp: firmware_update: Expand "params" in symbol names 56 57 The change only affects structs and functions relating to ABIs that are 58 marked as testing. There should be no impact on users of the stable APIs/ 59 ABIs. 60 618. Reimplement parsing of the firmware update downstream device parameter table 62 using an iterator macro 63 64 The change removes redundant APIs in the process. 65 66### Fixed 67 681. dsp: platform: Fix location of closing paren in overflow detection 692. libpldm: Install api header, update changelog 70 71## [0.10.0] 2024-11-01 72 73### Added 74 751. oem: meta: Add decode_oem_meta_file_io_write_req() 762. oem: meta: Add decode_oem_meta_file_io_read_req() 773. oem: meta: Add encode_oem_meta_file_io_read_resp() 784. pdr: Add pldm_entity_association_pdr_remove_contained_entity() 795. pdr: Add pldm_pdr_remove_fru_record_set_by_rsi() 806. pldm_entity_association_tree_copy_root_check() 817. oem: ibm: Add topology related state set and enum 82 838. base: Add size and buffer macros for struct pldm_msg 84 85 Together these macros reduce the need for use of reinterpret_cast<>() in C++. 86 879. entity: Add new entity types from DSP0249 v1.3.0 8810. stateset: Add new state sets from DSP0249 v1.3.0 89 90### Changed 91 921. dsp: bios_table: Null check for pldm_bios_table_iter_is_end() 93 94 pldm_bios_table_iter_is_end() now returns true if the provided argument is 95 NULL. 96 972. Register assignment for parameters of a number of APIs changed with increased 98 scrutiny on their implementations. 99 100 - `decode_entity_auxiliary_names_pdr()` 101 - `decode_get_state_sensor_readings_resp()` 102 - `decode_oem_meta_file_io_req()` 103 - `decode_platform_event_message_req()` 104 - `decode_platform_event_message_resp()` 105 - `decode_sensor_op_data()` 106 - `encode_get_state_effecter_states_resp()` 107 - `encode_state_effecter_pdr()` 108 - `encode_state_sensor_pdr()` 109 - `pldm_bios_table_append_pad_checksum()` 110 - `pldm_bios_table_attr_value_entry_encode_enum()` 111 - `pldm_bios_table_attr_value_entry_encode_string()` 112 - `pldm_pdr_find_record()` 113 - `pldm_pdr_get_next_record()` 114 1153. platform: Support PLDM_CPER_EVENT in encode_platform_event_message_req() 116 1174. dsp: firmware_update: Bounds check 118 decode_downstream_device_parameter_table_entry_versions() 119 120 The additional bounds-checking required the addition of further length 121 parameters. 122 123### Deprecated 124 1251. oem: meta: Deprecate `decode_oem_meta_file_io_req()` 126 127 Users should switch to `decode_oem_meta_file_io_write_req()`. Modify this 128 function to make it safer. 129 130 Modification: 131 132 - The meaning of the returned result. 133 - Change parameters from individual pointers to a struct. 134 - Check the length provided in the message won't exceed the buffer. 135 1362. pldm_entity_association_tree_copy_root() 137 138 The implementation allocates, but gives no indication to the caller if an 139 allocation (and hence the copy) has failed. Users should migrate to 140 pldm_entity_association_tree_copy_root_check(). 141 1423. The following APIs are deprecated as unsafe due to various unfixable CWE 143 violations: 144 145 - [CWE-129: Improper Validation of Array Index](https://cwe.mitre.org/data/definitions/129.html) 146 147 - `encode_get_bios_current_value_by_handle_resp()` 148 - `encode_get_bios_table_resp()` 149 - `encode_get_file_table_resp()` 150 - `encode_get_version_resp()` 151 - `pldm_bios_table_attr_entry_enum_decode_def_indices()` 152 - `pldm_bios_table_attr_entry_enum_decode_def_num()` 153 - `pldm_bios_table_attr_find_by_handle()` 154 - `pldm_bios_table_attr_find_by_string_handle()` 155 - `pldm_bios_table_attr_value_find_by_handle()` 156 - `pldm_bios_table_iter_create()` 157 - `pldm_bios_table_iter_is_end()` 158 - `pldm_bios_table_string_find_by_handle()` 159 - `pldm_bios_table_string_find_by_string()` 160 161 - [CWE-617: Reachable Assertion](https://cwe.mitre.org/data/definitions/617.html) 162 163 - `pldm_entity_association_tree_copy_root()` 164 165 - [CWE-789: Memory Allocation with Excessive Size Value](https://cwe.mitre.org/data/definitions/789.html) 166 167 - `decode_oem_meta_file_io_req()` 168 169 - [CWE-823: Use of Out-of-range Pointer Offset](https://cwe.mitre.org/data/definitions/823.html) 170 - `encode_fru_record()` 171 - `encode_get_pdr_resp()` 172 - `pldm_bios_table_attr_entry_enum_encode_length()` 173 174### Removed 175 1761. Deprecated functions with the `_check` suffix 177 178 - `get_fru_record_by_option_check()` 179 - `pldm_bios_table_append_pad_checksum_check()` 180 - `pldm_bios_table_attr_entry_enum_decode_def_num_check()` 181 - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()` 182 - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()` 183 - `pldm_bios_table_attr_entry_enum_encode_check()` 184 - `pldm_bios_table_attr_entry_integer_encode_check()` 185 - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()` 186 - `pldm_bios_table_attr_entry_string_encode_check()` 187 - `pldm_bios_table_attr_value_entry_encode_enum_check()` 188 - `pldm_bios_table_attr_value_entry_encode_integer_check()` 189 - `pldm_bios_table_attr_value_entry_encode_string_check()` 190 - `pldm_bios_table_string_entry_decode_string_check()` 191 - `pldm_bios_table_string_entry_encode_check()` 192 - `pldm_entity_association_pdr_add_check()` 193 - `pldm_entity_association_pdr_add_from_node_check()` 194 - `pldm_pdr_add_check()` 195 - `pldm_pdr_add_fru_record_set_check()` 196 197### Fixed 198 1991. dsp: bios_table: Null check for pldm_bios_table_iter_is_end() 200 201 Avoid a caller-controlled NULL pointer dereference in the library 202 implementation. 203 2042. platform: fix encode/decode_poll_for_platform_event_message_req 205 206 Update checking of `TransferOperationFlag` and `eventIDToAcknowledge` to 207 follow spec. 208 2093. platform: Fix checking `eventIDToAcknowledge` 210 211 As the event receiver sends `PollForPlatformEventMessage` with the 212 `tranferFlag` is `AcknowledgementOnly`, the value `eventIDToAcknowledge` 213 should be the previously retrieved eventID (from the PLDM terminus). 214 2154. dsp: platform: Prevent overflow of arithmetic on event_data_length 2165. dsp: platform: Bounds check encode_sensor_state_pdr() 2176. dsp: platform: Bounds check encode_state_effecter_pdr() 2187. dsp: pdr: Bounds check pldm_entity_association_pdr_extract() 2198. dsp: bios_table: Bounds check pldm_bios_table_append_pad_checksum() 2209. dsp: bios_table: Bounds check 221 pldm_bios_table_attr_value_entry_encode_string() 22210. dsp: bios_table: Bounds check pldm_bios_table_attr_value_entry_encode_enum() 22311. dsp: firmware_update: Bounds check 224 decode_downstream_device_parameter_table_entry_versions() 22512. oem: ibm: platform: Bounds check encode_bios_attribute_update_event_req() 22613. dsp: fru: Bounds check encode_get_fru_record_by_option_resp() 22714. dsp: fru: Bounds check encode_fru_record() 22815. dsp: bios: Bounds check encode_set_bios_table_req() 22916. dsp: bios: Bounds check encode_set_bios_attribute_current_value_req() 23017. dsp: bios_table: Bounds check pldm_bios_table_string_entry_encode() 23118. dsp: pdr: Rework test in pldm_entity_association_pdr_extract() 23219. dsp: platform: Fix decode_set_event_receiver_req() 233 234## [0.9.1] - 2024-09-07 235 236### Changed 237 2381. Moved evolutions intended for v0.9.0 into place 239 240 Evolutions for the release have been moved from `evolutions/current` to 241 `evolutions/v0.9.1`. Library users can apply them to migrate off of 242 deprecated APIs. 243 244## [0.9.0] - 2024-09-07 245 246### Added 247 2481. base: Define macros for reserved TIDs 2492. pdr: Add pldm_entity_association_pdr_add_contained_entity_to_remote_pdr() 2503. pdr: Add pldm_entity_association_pdr_create_new() 2514. platform: Define macros for the responded transferflags 2525. pdr: Add pldm_pdr_get_terminus_handle() API 2536. pdr: Add related decode_entity_auxiliary_names_pdr() APIs 2547. fw_update: Add encode req & decode resp for get_downstream_fw_params 2558. platform: Add decode_pldm_platform_cper_event() API 2569. decode_get_pdr_repository_info_resp_safe() 257 258 Replaces decode_get_pdr_repository_info_resp() as discussed in the 259 `Deprecated` section below 260 26110. decode_get_pdr_resp_safe() 262 263 Replaces decode_get_pdr_resp() as discussed in the `Deprecated` section 264 below 265 266### Changed 267 2681. pdr: Stabilise related decode_entity_auxiliary_names_pdr() APIs 2692. platform: Rework decode/encode_pldm_message_poll_event_data() APIs 2703. platform: Stabilise decode_pldm_message_poll_event_data() APIs 2714. ABI break for decode_sensor_op_data() 272 273 Applying LIBPLDM_CC_NONNULL to the internal msgbuf APIs caused 274 abi-compliance-checker to flag a change in the register containing the 275 parameter `previous_op_state`. 276 2775. platform: Stabilise decode_pldm_platform_cper_event() API 2786. oem: meta: Stabilise decode_oem_meta_file_io_write_req() API 2797. oem: meta: Stabilise decode_oem_meta_file_io_read_req() API 2808. oem: meta: Stabilise encode_oem_meta_file_io_read_resp() API 281 282### Deprecated 283 2841. Rename and deprecate functions with the `_check` suffix 285 286 All library function return values always need to be checked. The `_check` 287 suffix is redundant, so remove it. Migration to the non-deprecated 288 equivalents without the `_check` suffix can be performed using 289 `scripts/ apply-renames` and the [clang-rename][] configurations under 290 `evolutions/` 291 292 The deprecated functions: 293 294 - `get_fru_record_by_option_check()` 295 - `pldm_bios_table_append_pad_checksum_check()` 296 - `pldm_bios_table_attr_entry_enum_decode_def_num_check()` 297 - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()` 298 - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()` 299 - `pldm_bios_table_attr_entry_enum_encode_check()` 300 - `pldm_bios_table_attr_entry_integer_encode_check()` 301 - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()` 302 - `pldm_bios_table_attr_entry_string_encode_check()` 303 - `pldm_bios_table_attr_value_entry_encode_enum_check()` 304 - `pldm_bios_table_attr_value_entry_encode_integer_check()` 305 - `pldm_bios_table_attr_value_entry_encode_string_check()` 306 - `pldm_bios_table_string_entry_decode_string_check()` 307 - `pldm_bios_table_string_entry_encode_check()` 308 - `pldm_entity_association_pdr_add_check()` 309 - `pldm_entity_association_pdr_add_from_node_check()` 310 - `pldm_pdr_add_check()` 311 - `pldm_pdr_add_fru_record_set_check()` 312 313[clang-rename]: https://clang.llvm.org/extra/clang-rename.html 314 3152. `decode_get_pdr_repository_info_resp()` 316 317 Users should move to `decode_get_pdr_repository_info_resp_safe()` which 318 eliminates the opportunity for buffer overruns when extracting objects from 319 the message. 320 3213. `decode_get_pdr_resp()` 322 323 Users should move to `decode_get_pdr_resp_safe()` which reduces the 324 invocation tedium and improves memory safety over `decode_get_pdr_resp()`. 325 326### Removed 327 3281. IBM OEM header compatibility symlinks. 329 330 Anyone left using the deprecated paths can migrate using the coccinelle patch 331 at `evolutions/current/oem-ibm-header-compat.cocci`. 332 333### Fixed 334 3351. requester: instance-id: Release read lock on conflict 3362. pdr: Error propagation for 337 pldm_entity_association_pdr_add_from_node_with_record_handle() 338 339## [0.8.0] - 2024-05-23 340 341### Added 342 3431. base: Provide pldm_msg_hdr_correlate_response() 3442. transport: af-mctp: Add pldm_transport_af_mctp_bind() 3453. oem: ibm: Add chapdata file type support 3464. base: Added PLDM_SMBIOS & PLDM_RDE message types 3475. oem: meta: Add decode_oem_meta_file_io_req() 3486. state-set: Add all state set values to system power state enum as per DSP0249 3497. platform: Add alias members to the enum 350 pldm_pdr_repository_chg_event_change_record_event_data_operation. 351 352 enum constants with inconsistent names are deprecated with this change. 353 remove old inconsistent enum members after backward compatibility cleanup is 354 done 355 3568. oem-ibm: Alias `pldm_oem_ibm_fru_field_type` members as `PLDM_OEM_IBM_*` 3579. oem: ibm: Add Firmware Update Access Key(UAK) as a FRU field type 35810. platform: Add 3 PDR type enum for Redfish Device Enablement per 359 DSP0248_1.2.0 36011. state_set: Add CONNECTED and DISCONNECTED enum for Link State set 36112. entity: Add enum for Network Interface Connectors and Network Ports 362 Connection Types 36313. pdr: Add decode_numeric_effecter_pdr_data() 36414. oem: ibm: Support for the Real SAI entity id 36515. fw_update: Add encode req & decode resp for query_downstream_devices 36616. fw_update: Add encode req & decode resp for query_downstream_identifiers 36717. platform: Add support for GetStateEffecterStates command 368 369### Changed 370 3711. base: Stabilise pldm_msg_hdr_correlate_response() 3722. transport: af-mctp: Stabilise pldm_transport_af_mctp_bind() 3733. libpldm: Fix header use 3744. libpldm: More fixes for header use 3755. pdr: Stabilise pldm_pdr_find_last_in_range() API 3766. pdr: Stabilise pldm_entity_association_pdr_add_from_node_with_record_handle() 3777. oem: meta: stabilise decode_oem_meta_file_io_req() 3788. pdr: pldm_entity_association_tree_copy_root(): Document preconditions 379 380### Deprecated 381 3821. Deprecate `pldm_oem_ibm_fru_field_type` members that that are not prefixed 383 with `PLDM_OEM_IBM_` 384 385### Fixed 386 3871. libpldm: Rationalise the local and installed path of pldm.h 3882. pdr: Assign record_handle in entity_association_pdr_add_children() 3893. msgbuf: Require sensor data enum in pldm_msgbuf_extract_sensor_value() 3904. pdr: Remove redundant constant for minimum numeric sensor PDR length 3915. tests: oem: meta: Fix fileio use of msgbuf 392 393## [0.7.0] - 2023-08-29 394 395### Added 396 3971. state-set: Add new enum for Operational Fault Status enum 398 399### Changed 400 4011. transport: Match specified metadata in pldm_transport_send_recv_msg() 4022. transport: mctp-demux: Drop ABI annotation for internal symbols 4033. transport: Stabilise core transport and implementation APIs 404 405 This stabilisation covers the following headers and functions: 406 407 - libpldm/transport.h 408 409 - pldm_transport_poll() 410 - pldm_transport_send_msg() 411 - pldm_transport_recv_msg() 412 - pldm_transport_send_recv_msg() 413 414 - libpldm/transport/af-mctp.h 415 416 - pldm_transport_af_mctp_init() 417 - pldm_transport_af_mctp_destroy() 418 - pldm_transport_af_mctp_core() 419 - pldm_transport_af_mctp_init_pollfd() 420 - pldm_transport_af_mctp_map_tid() 421 - pldm_transport_af_mctp_unmap_tid() 422 423 - libpldm/transport/mctp-demux.h 424 - pldm_transport_mctp_demux_init() 425 - pldm_transport_mctp_demux_destroy() 426 - pldm_transport_mctp_demux_core() 427 - pldm_transport_mctp_demux_init_pollfd() 428 - pldm_transport_mctp_demux_map_tid() 429 - pldm_transport_mctp_demux_unmap_tid() 430 431### Deprecated 432 4331. All the existing "requester" APIs from `libpldm/pldm.h` (also known as 434 `libpldm/requester/pldm.h`): 435 436 - pldm_open() 437 - pldm_send_recv() 438 - pldm_send() 439 - pldm_recv() 440 - pldm_recv_any() 441 - pldm_close() 442 443 Users should migrate to the newer "transport" APIs instead. 444 445## Fixed 446 4471. tests: Exclude transport tests when build excludes testing ABIs 4482. abi: Capture deprecation of pldm_close() 449 450## [0.6.0] - 2023-08-22 451 452### Changed 453 4541. pdr: Avoid ID overflow in pldm_entity_association_tree_add_entity() 4552. meson: Apply `b_ndebug=if-release` by default 4563. pdr : Stabilize pldm_entity_association_tree_add_entity() 4574. pdr: Stabilise pldm_entity_association_tree_find_with_locality() 4585. pdr: Stabilize pldm_entity_node_get_remote_container_id() 4596. transport: af-mctp: Assign out-params on success in \*\_recv() 4607. transport: Generalise the pldm_transport_recv_msg() API 461 462### Removed 463 4641. pdr: Remove pldm_entity_association_pdr_add() 4652. state-set: Remove enum pldm_state_set_operational_fault_status_values 466 467### Fixed 468 4691. transport: register init_pollfd callback for af-mctp 4702. transport: fix init_pollfd function parameter 4713. transport: Fix doxygen and variables for send and recv functions 4724. transport: af-mctp: Ensure malloc() succeeds in \*\_recv() 473 474## [0.5.0] - 2023-08-09 475 476### Added 477 4781. pdr: Introduce pldm_entity_association_pdr_add_check() 479 480### Changed 481 4821. pdr: Allow record_handle to be NULL for pldm_pdr_add_check() 4832. transport: pldm_transport_poll(): Adjust return value semantics 4843. transport: free un-wanted responses in pldm_transport_send_recv_msg() 485 486### Deprecated 487 4881. state-set: Enum pldm_state_set_operational_fault_status_values 489 490 The enum operational_fault_status is defined with wrong members and will 491 eventually be replaced with the correct members. Any uses of 492 pldm_state_set_operational_fault_status_values members should move to 493 equivalent pldm_state_set_operational_stress_status_values members if needed. 494 4952. platform: Struct field name in fru_record_set PDR 496 497 References to entity_instance_num should be changed to entity_instance 498 4993. platform: Struct field name in numeric sensor value PDR 500 501 References to entity_instance_num should be changed to entity_instance 502 503### Removed 504 5051. bios_table: Remove pldm_bios_table_attr_entry_integer_encode_length() 5062. bios_table: Remove pldm_bios_table_attr_value_entry_encode_enum() 5073. bios_table: Remove pldm_bios_table_attr_value_entry_encode_string() 5084. bios_table: Remove pldm_bios_table_attr_value_entry_encode_integer() 5095. bios_table: Remove pldm_bios_table_append_pad_checksum() 5106. fru: Remove get_fru_record_by_option() 5117. pdr: Make is_present() static 5128. pdr: Remove pldm_pdr_add() 5139. pdr: Remove pldm_pdr_add_fru_record_set() 51410. pdr: Remove pldm_entity_association_pdr_add_from_node() 51511. pdr: Make find_entity_ref_in_tree() static 51612. pdr: Make entity_association_tree_find() static 517 518### Fixed 519 5201. requester: Fix response buffer cast in pldm_send_recv() 5212. pdr: Hoist record handle overflow test to avoid memory leak 5223. transport: Correct comparison in while loop condition 523 524## [0.4.0] - 2023-07-14 525 526### Added 527 5281. bios_table: Introduce pldm_bios_table_append_pad_checksum_check() 5292. fru: Introduce get_fru_record_by_option_check() 5303. pdr: Introduce pldm_entity_association_pdr_add_from_node_check() 5314. pdr: Introduce pldm_pdr_add_check() 5325. pdr: Introduce pldm_pdr_add_fru_record_set_check() 533 534### Changed 535 5361. requester: Mark pldm_close() as LIBPLDM_ABI_TESTING 5372. requester: Expose pldm_close() in header 5383. bios_table: pldm_bios_table_string_entry_encode_check(): Handle overflow 5394. bios_table: pldm_bios_table_iter_create(): Return NULL on failed alloc 5405. bios_table: pldm_bios_table_iter_next(): Invalid entry halts iteration 5416. pdr: pldm_pdr_init(): Return NULL on allocation failure 5427. pdr: pldm_pdr_destroy(): Exit early if repo is NULL 5438. pdr: Document preconditions for trivial accessor functions 544 545 A trivial accessor function is one that exposes properties of an object in a 546 way can't result in an error, beyond passing an invalid argument to the 547 function. For APIs meeting this definition we define a precondition that 548 struct pointers must point to valid objects to avoid polluting the function 549 prototypes. The following APIs now have this precondition explicitly defined: 550 551 - pldm_entity_extract() 552 - pldm_entity_get_parent() 553 - pldm_entity_is_exist_parent() 554 - pldm_entity_is_node_parent() 555 - pldm_is_current_parent_child 556 - pldm_is_empty_entity_assoc_tree() 557 - pldm_pdr_get_record_count() 558 - pldm_pdr_get_record_handle() 559 - pldm_pdr_get_repo_size() 560 - pldm_pdr_record_is_remote() 561 5629. pdr: pldm_entity_node_get_remote_container_id() is a trivial accessor 56310. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Exit early on NULL arguments 56411. pdr: pldm_entity_association_tree_init(): Return NULL on failed alloc 56512. pdr: pldm_entity_association_tree_visit(): Document preconditions 56613. pdr: pldm_entity_association_tree_visit(): Exit early on failure 56714. pdr: pldm_entity_association_tree_destroy(): Exit early on bad argument 56815. pdr: pldm_entity_get_num_children(): Return zero for invalid arguments 56916. pdr: pldm_is_current_parent_child(): Return false for invalid arguments 57017. pdr: pldm_entity_association_pdr_add(): Exit early on bad arguments 57118. pdr: pldm_find_entity_ref_in_tree(): Exit early on bad arguments 57219. pdr: pldm_entity_association_tree_find(): Early exit on bad arguments 57320. pdr: pldm_entity_association_tree_destroy_root(): Exit early on bad arg 57421. pdr: pldm_entity_association_pdr_extract(): Early exit on bad arguments 57522. pdr: pldm_entity_association_pdr_extract(): Assign out params at exit 57623. pdr: pldm_entity_get_num_children(): Don't return invalid values 57724. libpldm: Lift or remove asserts where a subsequent check exists 578 579### Deprecated 580 5811. pldm_bios_table_attr_entry_integer_encode() 582 583 Migrate to pldm_bios_table_attr_entry_integer_encode_check() 584 5852. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_enum() 586 587 Migrate to pldm_bios_table_attr_value_entry_encode_enum_check() 588 5893. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_string() 590 591 Migrate to pldm_bios_table_attr_value_entry_encode_string_check() 592 5934. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_integer() 594 595 Migrate to pldm_bios_table_attr_value_entry_encode_integer_check() 596 5975. pdr: Deprecate is_present() 598 599 There should be no users of this symbol. If you are a user, you should figure 600 out how to stop, or get in touch. This symbol will be marked static the 601 release after deprecation. 602 6036. pdr: Deprecate find_entity_ref_in_tree() 604 605 There should be no users of this symbol. If you are a user, you should figure 606 out how to stop, or get in touch. This symbol will be marked static the 607 release after deprecation. 608 6097. pdr: Deprecate entity_association_tree_find() 610 611 There should be no users of this symbol. If you are a user, you should figure 612 out how to stop, or get in touch. This symbol will be marked static the 613 release after deprecation. 614 6158. bios_table: Stabilise pldm_bios_table_append_pad_checksum_check() 616 617 pldm_bios_table_append_pad_checksum() is deprecated by this change. Users of 618 pldm_bios_table_append_pad_checksum() should migrate to 619 pldm_bios_table_append_pad_checksum_check() 620 6219. fru: Stabilise get_fru_record_by_option_check() 622 623 get_fru_record_by_option() is deprecated by this change. Users of 624 get_fru_record_by_option() should migrate to get_fru_record_by_option_check() 625 62610. pdr: Stabilise pldm_entity_association_pdr_add_from_node_check() 627 628 pldm_entity_association_pdr_add_from_node() is deprecated by this change. 629 Users of pldm_entity_association_pdr_add_from_node() should migrate to 630 pldm_entity_association_pdr_add_from_node_check() 631 63211. pdr: Stabilise pldm_pdr_add_check() 633 634 pldm_pdr_add() is deprecated by this change. Users of pldm_pdr_add() should 635 migrate to pldm_pdr_add_check() 636 63712. pdr: Stabilise pldm_pdr_add_fru_record_set_check() 638 639 pldm_pdr_add_fru_record_set() is deprecated by this change. Users of 640 pldm_pdr_add_fru_record_set() should migrate to 641 pldm_pdr_add_fru_record_set_check() 642 643### Removed 644 6451. bios_table: Remove deprecated APIs sanitized by assert(): 646 647 - pldm_bios_table_string_entry_encode() 648 - pldm_bios_table_string_entry_decode_string() 649 - pldm_bios_table_attr_entry_enum_encode() 650 - pldm_bios_table_attr_entry_enum_decode_pv_num() 651 - pldm_bios_table_attr_entry_enum_decode_def_num() 652 - pldm_bios_table_attr_entry_enum_decode_pv_hdls() 653 - pldm_bios_table_attr_entry_string_encode() 654 - pldm_bios_table_attr_entry_string_decode_def_string_length() 655 656### Fixed 657 6581. pdr: Return success for pldm_pdr_find_child_container_id_range_exclude() API 6592. pdr: Rework pldm_pdr_find_container_id_range_exclude() API 6603. transport: mctp-demux: Don't test socket for non-zero value 6614. requester: Return PLDM_REQUESTER_OPEN_FAIL from pldm_open() on error 6625. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Document reality of return 6636. transport: Fix possible NULL ptr deref in pldm_socket_sndbuf_init() 6647. abi: Update to remove pldm_close() from reference dumps 6658. bios_table: Annotate pldm_bios_table_attr_value_entry_encode_integer() 666 667## [0.3.0] - 2023-06-23 668 669### Added 670 6711. Add encode/decode pldmMessagePollEvent data 6722. README: Add a section on working with libpldm 6733. pdr: Introduce remote_container_id and associated APIs 6744. pdr: Add APIs for creating and locating remote PDRs 6755. pdr: Add pldm_pdr_find_last_in_range() 6766. pdr: Add pldm_entity_association_pdr_add_from_node_with_record_handle() 6777. pdr: Add pldm_pdr_find_container_id_range_exclude() 678 679### Changed 680 6811. include: Move installed transport.h under libpldm/ 6822. libpldm: Explicit deprecated, stable and testing ABI classes 6833. meson: Reduce strength of oem-ibm requirements from enabled to allowed 684 685 The `oem-ibm` feature is now enabled by the default meson configuration, for 686 CI purposes. `oem-ibm` is still disabled by default in the `libpldm` bitbake 687 recipe: 688 689 <https://github.com/openbmc/openbmc/blob/master/meta-phosphor/recipes-phosphor/libpldm/libpldm_git.bb#L10> 690 691 To disable `oem-ibm` in your development builds, pass `-Doem-ibm=disabled` 692 when invoking `meson setup` 693 6944. bios_table: Relax pldm_bios_table_string_entry_decode_string_check() 6955. bios_table: Relax pldm_bios_table_attr_entry_enum_decode_pv_hdls_check() 696 697### Deprecated 698 6991. bios_table: Deprecate APIs with arguments sanitized using assert() 700 701 C provides enough foot-guns without us encoding them into library APIs. 702 Specifically, deprecate the following in favour of their `*_check()` variants 703 which ensure assertions won't fail or otherwise invoke UB: 704 705 - pldm_bios_table_string_entry_encode() 706 - pldm_bios_table_string_entry_decode_string() 707 - pldm_bios_table_attr_entry_enum_encode() 708 - pldm_bios_table_attr_entry_enum_decode_pv_num() 709 - pldm_bios_table_attr_entry_enum_decode_def_num() 710 - pldm_bios_table_attr_entry_enum_decode_pv_hdls() 711 - pldm_bios_table_attr_entry_string_encode() 712 - pldm_bios_table_attr_entry_string_decode_def_string_length() 713 714### Removed 715 7161. libpldm: Remove the requester-api option 717 718### Fixed 719 7201. requester: Make pldm_open() return existing fd 7212. transport: Prevent sticking in waiting for response 7223. transport: Match on response in pldm_transport_send_recv_msg() 7234. requester: Add check before accessing hdr in pldm_recv() 7245. bios_table: pldm_bios_table_attr_entry_string_info_check() NULL deref 725