xref: /openbmc/libpldm/CHANGELOG.md (revision 6a97b79ebcfe4d91f8150d62b61e1a2fb2ac3a12)
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
61### Fixed
62
631. dsp: platform: Fix location of closing paren in overflow detection
642. libpldm: Install api header, update changelog
65
66## [0.10.0] 2024-11-01
67
68### Added
69
701. oem: meta: Add decode_oem_meta_file_io_write_req()
712. oem: meta: Add decode_oem_meta_file_io_read_req()
723. oem: meta: Add encode_oem_meta_file_io_read_resp()
734. pdr: Add pldm_entity_association_pdr_remove_contained_entity()
745. pdr: Add pldm_pdr_remove_fru_record_set_by_rsi()
756. pldm_entity_association_tree_copy_root_check()
767. oem: ibm: Add topology related state set and enum
77
788. base: Add size and buffer macros for struct pldm_msg
79
80   Together these macros reduce the need for use of reinterpret_cast<>() in C++.
81
829. entity: Add new entity types from DSP0249 v1.3.0
8310. stateset: Add new state sets from DSP0249 v1.3.0
84
85### Changed
86
871. dsp: bios_table: Null check for pldm_bios_table_iter_is_end()
88
89   pldm_bios_table_iter_is_end() now returns true if the provided argument is
90   NULL.
91
922. Register assignment for parameters of a number of APIs changed with increased
93   scrutiny on their implementations.
94
95   - `decode_entity_auxiliary_names_pdr()`
96   - `decode_get_state_sensor_readings_resp()`
97   - `decode_oem_meta_file_io_req()`
98   - `decode_platform_event_message_req()`
99   - `decode_platform_event_message_resp()`
100   - `decode_sensor_op_data()`
101   - `encode_get_state_effecter_states_resp()`
102   - `encode_state_effecter_pdr()`
103   - `encode_state_sensor_pdr()`
104   - `pldm_bios_table_append_pad_checksum()`
105   - `pldm_bios_table_attr_value_entry_encode_enum()`
106   - `pldm_bios_table_attr_value_entry_encode_string()`
107   - `pldm_pdr_find_record()`
108   - `pldm_pdr_get_next_record()`
109
1103. platform: Support PLDM_CPER_EVENT in encode_platform_event_message_req()
111
1124. dsp: firmware_update: Bounds check
113   decode_downstream_device_parameter_table_entry_versions()
114
115   The additional bounds-checking required the addition of further length
116   parameters.
117
118### Deprecated
119
1201. oem: meta: Deprecate `decode_oem_meta_file_io_req()`
121
122   Users should switch to `decode_oem_meta_file_io_write_req()`. Modify this
123   function to make it safer.
124
125   Modification:
126
127   - The meaning of the returned result.
128   - Change parameters from individual pointers to a struct.
129   - Check the length provided in the message won't exceed the buffer.
130
1312. pldm_entity_association_tree_copy_root()
132
133   The implementation allocates, but gives no indication to the caller if an
134   allocation (and hence the copy) has failed. Users should migrate to
135   pldm_entity_association_tree_copy_root_check().
136
1373. The following APIs are deprecated as unsafe due to various unfixable CWE
138   violations:
139
140   - [CWE-129: Improper Validation of Array Index](https://cwe.mitre.org/data/definitions/129.html)
141
142     - `encode_get_bios_current_value_by_handle_resp()`
143     - `encode_get_bios_table_resp()`
144     - `encode_get_file_table_resp()`
145     - `encode_get_version_resp()`
146     - `pldm_bios_table_attr_entry_enum_decode_def_indices()`
147     - `pldm_bios_table_attr_entry_enum_decode_def_num()`
148     - `pldm_bios_table_attr_find_by_handle()`
149     - `pldm_bios_table_attr_find_by_string_handle()`
150     - `pldm_bios_table_attr_value_find_by_handle()`
151     - `pldm_bios_table_iter_create()`
152     - `pldm_bios_table_iter_is_end()`
153     - `pldm_bios_table_string_find_by_handle()`
154     - `pldm_bios_table_string_find_by_string()`
155
156   - [CWE-617: Reachable Assertion](https://cwe.mitre.org/data/definitions/617.html)
157
158     - `pldm_entity_association_tree_copy_root()`
159
160   - [CWE-789: Memory Allocation with Excessive Size Value](https://cwe.mitre.org/data/definitions/789.html)
161
162     - `decode_oem_meta_file_io_req()`
163
164   - [CWE-823: Use of Out-of-range Pointer Offset](https://cwe.mitre.org/data/definitions/823.html)
165     - `encode_fru_record()`
166     - `encode_get_pdr_resp()`
167     - `pldm_bios_table_attr_entry_enum_encode_length()`
168
169### Removed
170
1711. Deprecated functions with the `_check` suffix
172
173   - `get_fru_record_by_option_check()`
174   - `pldm_bios_table_append_pad_checksum_check()`
175   - `pldm_bios_table_attr_entry_enum_decode_def_num_check()`
176   - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()`
177   - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()`
178   - `pldm_bios_table_attr_entry_enum_encode_check()`
179   - `pldm_bios_table_attr_entry_integer_encode_check()`
180   - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()`
181   - `pldm_bios_table_attr_entry_string_encode_check()`
182   - `pldm_bios_table_attr_value_entry_encode_enum_check()`
183   - `pldm_bios_table_attr_value_entry_encode_integer_check()`
184   - `pldm_bios_table_attr_value_entry_encode_string_check()`
185   - `pldm_bios_table_string_entry_decode_string_check()`
186   - `pldm_bios_table_string_entry_encode_check()`
187   - `pldm_entity_association_pdr_add_check()`
188   - `pldm_entity_association_pdr_add_from_node_check()`
189   - `pldm_pdr_add_check()`
190   - `pldm_pdr_add_fru_record_set_check()`
191
192### Fixed
193
1941. dsp: bios_table: Null check for pldm_bios_table_iter_is_end()
195
196   Avoid a caller-controlled NULL pointer dereference in the library
197   implementation.
198
1992. platform: fix encode/decode_poll_for_platform_event_message_req
200
201   Update checking of `TransferOperationFlag` and `eventIDToAcknowledge` to
202   follow spec.
203
2043. platform: Fix checking `eventIDToAcknowledge`
205
206   As the event receiver sends `PollForPlatformEventMessage` with the
207   `tranferFlag` is `AcknowledgementOnly`, the value `eventIDToAcknowledge`
208   should be the previously retrieved eventID (from the PLDM terminus).
209
2104. dsp: platform: Prevent overflow of arithmetic on event_data_length
2115. dsp: platform: Bounds check encode_sensor_state_pdr()
2126. dsp: platform: Bounds check encode_state_effecter_pdr()
2137. dsp: pdr: Bounds check pldm_entity_association_pdr_extract()
2148. dsp: bios_table: Bounds check pldm_bios_table_append_pad_checksum()
2159. dsp: bios_table: Bounds check
216   pldm_bios_table_attr_value_entry_encode_string()
21710. dsp: bios_table: Bounds check pldm_bios_table_attr_value_entry_encode_enum()
21811. dsp: firmware_update: Bounds check
219    decode_downstream_device_parameter_table_entry_versions()
22012. oem: ibm: platform: Bounds check encode_bios_attribute_update_event_req()
22113. dsp: fru: Bounds check encode_get_fru_record_by_option_resp()
22214. dsp: fru: Bounds check encode_fru_record()
22315. dsp: bios: Bounds check encode_set_bios_table_req()
22416. dsp: bios: Bounds check encode_set_bios_attribute_current_value_req()
22517. dsp: bios_table: Bounds check pldm_bios_table_string_entry_encode()
22618. dsp: pdr: Rework test in pldm_entity_association_pdr_extract()
22719. dsp: platform: Fix decode_set_event_receiver_req()
228
229## [0.9.1] - 2024-09-07
230
231### Changed
232
2331. Moved evolutions intended for v0.9.0 into place
234
235   Evolutions for the release have been moved from `evolutions/current` to
236   `evolutions/v0.9.1`. Library users can apply them to migrate off of
237   deprecated APIs.
238
239## [0.9.0] - 2024-09-07
240
241### Added
242
2431. base: Define macros for reserved TIDs
2442. pdr: Add pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
2453. pdr: Add pldm_entity_association_pdr_create_new()
2464. platform: Define macros for the responded transferflags
2475. pdr: Add pldm_pdr_get_terminus_handle() API
2486. pdr: Add related decode_entity_auxiliary_names_pdr() APIs
2497. fw_update: Add encode req & decode resp for get_downstream_fw_params
2508. platform: Add decode_pldm_platform_cper_event() API
2519. decode_get_pdr_repository_info_resp_safe()
252
253   Replaces decode_get_pdr_repository_info_resp() as discussed in the
254   `Deprecated` section below
255
25610. decode_get_pdr_resp_safe()
257
258    Replaces decode_get_pdr_resp() as discussed in the `Deprecated` section
259    below
260
261### Changed
262
2631. pdr: Stabilise related decode_entity_auxiliary_names_pdr() APIs
2642. platform: Rework decode/encode_pldm_message_poll_event_data() APIs
2653. platform: Stabilise decode_pldm_message_poll_event_data() APIs
2664. ABI break for decode_sensor_op_data()
267
268   Applying LIBPLDM_CC_NONNULL to the internal msgbuf APIs caused
269   abi-compliance-checker to flag a change in the register containing the
270   parameter `previous_op_state`.
271
2725. platform: Stabilise decode_pldm_platform_cper_event() API
2736. oem: meta: Stabilise decode_oem_meta_file_io_write_req() API
2747. oem: meta: Stabilise decode_oem_meta_file_io_read_req() API
2758. oem: meta: Stabilise encode_oem_meta_file_io_read_resp() API
276
277### Deprecated
278
2791. Rename and deprecate functions with the `_check` suffix
280
281   All library function return values always need to be checked. The `_check`
282   suffix is redundant, so remove it. Migration to the non-deprecated
283   equivalents without the `_check` suffix can be performed using
284   `scripts/ apply-renames` and the [clang-rename][] configurations under
285   `evolutions/`
286
287   The deprecated functions:
288
289   - `get_fru_record_by_option_check()`
290   - `pldm_bios_table_append_pad_checksum_check()`
291   - `pldm_bios_table_attr_entry_enum_decode_def_num_check()`
292   - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()`
293   - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()`
294   - `pldm_bios_table_attr_entry_enum_encode_check()`
295   - `pldm_bios_table_attr_entry_integer_encode_check()`
296   - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()`
297   - `pldm_bios_table_attr_entry_string_encode_check()`
298   - `pldm_bios_table_attr_value_entry_encode_enum_check()`
299   - `pldm_bios_table_attr_value_entry_encode_integer_check()`
300   - `pldm_bios_table_attr_value_entry_encode_string_check()`
301   - `pldm_bios_table_string_entry_decode_string_check()`
302   - `pldm_bios_table_string_entry_encode_check()`
303   - `pldm_entity_association_pdr_add_check()`
304   - `pldm_entity_association_pdr_add_from_node_check()`
305   - `pldm_pdr_add_check()`
306   - `pldm_pdr_add_fru_record_set_check()`
307
308[clang-rename]: https://clang.llvm.org/extra/clang-rename.html
309
3102. `decode_get_pdr_repository_info_resp()`
311
312   Users should move to `decode_get_pdr_repository_info_resp_safe()` which
313   eliminates the opportunity for buffer overruns when extracting objects from
314   the message.
315
3163. `decode_get_pdr_resp()`
317
318   Users should move to `decode_get_pdr_resp_safe()` which reduces the
319   invocation tedium and improves memory safety over `decode_get_pdr_resp()`.
320
321### Removed
322
3231. IBM OEM header compatibility symlinks.
324
325   Anyone left using the deprecated paths can migrate using the coccinelle patch
326   at `evolutions/current/oem-ibm-header-compat.cocci`.
327
328### Fixed
329
3301. requester: instance-id: Release read lock on conflict
3312. pdr: Error propagation for
332   pldm_entity_association_pdr_add_from_node_with_record_handle()
333
334## [0.8.0] - 2024-05-23
335
336### Added
337
3381. base: Provide pldm_msg_hdr_correlate_response()
3392. transport: af-mctp: Add pldm_transport_af_mctp_bind()
3403. oem: ibm: Add chapdata file type support
3414. base: Added PLDM_SMBIOS & PLDM_RDE message types
3425. oem: meta: Add decode_oem_meta_file_io_req()
3436. state-set: Add all state set values to system power state enum as per DSP0249
3447. platform: Add alias members to the enum
345   pldm_pdr_repository_chg_event_change_record_event_data_operation.
346
347   enum constants with inconsistent names are deprecated with this change.
348   remove old inconsistent enum members after backward compatibility cleanup is
349   done
350
3518. oem-ibm: Alias `pldm_oem_ibm_fru_field_type` members as `PLDM_OEM_IBM_*`
3529. oem: ibm: Add Firmware Update Access Key(UAK) as a FRU field type
35310. platform: Add 3 PDR type enum for Redfish Device Enablement per
354    DSP0248_1.2.0
35511. state_set: Add CONNECTED and DISCONNECTED enum for Link State set
35612. entity: Add enum for Network Interface Connectors and Network Ports
357    Connection Types
35813. pdr: Add decode_numeric_effecter_pdr_data()
35914. oem: ibm: Support for the Real SAI entity id
36015. fw_update: Add encode req & decode resp for query_downstream_devices
36116. fw_update: Add encode req & decode resp for query_downstream_identifiers
36217. platform: Add support for GetStateEffecterStates command
363
364### Changed
365
3661. base: Stabilise pldm_msg_hdr_correlate_response()
3672. transport: af-mctp: Stabilise pldm_transport_af_mctp_bind()
3683. libpldm: Fix header use
3694. libpldm: More fixes for header use
3705. pdr: Stabilise pldm_pdr_find_last_in_range() API
3716. pdr: Stabilise pldm_entity_association_pdr_add_from_node_with_record_handle()
3727. oem: meta: stabilise decode_oem_meta_file_io_req()
3738. pdr: pldm_entity_association_tree_copy_root(): Document preconditions
374
375### Deprecated
376
3771. Deprecate `pldm_oem_ibm_fru_field_type` members that that are not prefixed
378   with `PLDM_OEM_IBM_`
379
380### Fixed
381
3821. libpldm: Rationalise the local and installed path of pldm.h
3832. pdr: Assign record_handle in entity_association_pdr_add_children()
3843. msgbuf: Require sensor data enum in pldm_msgbuf_extract_sensor_value()
3854. pdr: Remove redundant constant for minimum numeric sensor PDR length
3865. tests: oem: meta: Fix fileio use of msgbuf
387
388## [0.7.0] - 2023-08-29
389
390### Added
391
3921. state-set: Add new enum for Operational Fault Status enum
393
394### Changed
395
3961. transport: Match specified metadata in pldm_transport_send_recv_msg()
3972. transport: mctp-demux: Drop ABI annotation for internal symbols
3983. transport: Stabilise core transport and implementation APIs
399
400   This stabilisation covers the following headers and functions:
401
402   - libpldm/transport.h
403
404     - pldm_transport_poll()
405     - pldm_transport_send_msg()
406     - pldm_transport_recv_msg()
407     - pldm_transport_send_recv_msg()
408
409   - libpldm/transport/af-mctp.h
410
411     - pldm_transport_af_mctp_init()
412     - pldm_transport_af_mctp_destroy()
413     - pldm_transport_af_mctp_core()
414     - pldm_transport_af_mctp_init_pollfd()
415     - pldm_transport_af_mctp_map_tid()
416     - pldm_transport_af_mctp_unmap_tid()
417
418   - libpldm/transport/mctp-demux.h
419     - pldm_transport_mctp_demux_init()
420     - pldm_transport_mctp_demux_destroy()
421     - pldm_transport_mctp_demux_core()
422     - pldm_transport_mctp_demux_init_pollfd()
423     - pldm_transport_mctp_demux_map_tid()
424     - pldm_transport_mctp_demux_unmap_tid()
425
426### Deprecated
427
4281. All the existing "requester" APIs from `libpldm/pldm.h` (also known as
429   `libpldm/requester/pldm.h`):
430
431   - pldm_open()
432   - pldm_send_recv()
433   - pldm_send()
434   - pldm_recv()
435   - pldm_recv_any()
436   - pldm_close()
437
438   Users should migrate to the newer "transport" APIs instead.
439
440## Fixed
441
4421. tests: Exclude transport tests when build excludes testing ABIs
4432. abi: Capture deprecation of pldm_close()
444
445## [0.6.0] - 2023-08-22
446
447### Changed
448
4491. pdr: Avoid ID overflow in pldm_entity_association_tree_add_entity()
4502. meson: Apply `b_ndebug=if-release` by default
4513. pdr : Stabilize pldm_entity_association_tree_add_entity()
4524. pdr: Stabilise pldm_entity_association_tree_find_with_locality()
4535. pdr: Stabilize pldm_entity_node_get_remote_container_id()
4546. transport: af-mctp: Assign out-params on success in \*\_recv()
4557. transport: Generalise the pldm_transport_recv_msg() API
456
457### Removed
458
4591. pdr: Remove pldm_entity_association_pdr_add()
4602. state-set: Remove enum pldm_state_set_operational_fault_status_values
461
462### Fixed
463
4641. transport: register init_pollfd callback for af-mctp
4652. transport: fix init_pollfd function parameter
4663. transport: Fix doxygen and variables for send and recv functions
4674. transport: af-mctp: Ensure malloc() succeeds in \*\_recv()
468
469## [0.5.0] - 2023-08-09
470
471### Added
472
4731. pdr: Introduce pldm_entity_association_pdr_add_check()
474
475### Changed
476
4771. pdr: Allow record_handle to be NULL for pldm_pdr_add_check()
4782. transport: pldm_transport_poll(): Adjust return value semantics
4793. transport: free un-wanted responses in pldm_transport_send_recv_msg()
480
481### Deprecated
482
4831. state-set: Enum pldm_state_set_operational_fault_status_values
484
485   The enum operational_fault_status is defined with wrong members and will
486   eventually be replaced with the correct members. Any uses of
487   pldm_state_set_operational_fault_status_values members should move to
488   equivalent pldm_state_set_operational_stress_status_values members if needed.
489
4902. platform: Struct field name in fru_record_set PDR
491
492   References to entity_instance_num should be changed to entity_instance
493
4943. platform: Struct field name in numeric sensor value PDR
495
496   References to entity_instance_num should be changed to entity_instance
497
498### Removed
499
5001. bios_table: Remove pldm_bios_table_attr_entry_integer_encode_length()
5012. bios_table: Remove pldm_bios_table_attr_value_entry_encode_enum()
5023. bios_table: Remove pldm_bios_table_attr_value_entry_encode_string()
5034. bios_table: Remove pldm_bios_table_attr_value_entry_encode_integer()
5045. bios_table: Remove pldm_bios_table_append_pad_checksum()
5056. fru: Remove get_fru_record_by_option()
5067. pdr: Make is_present() static
5078. pdr: Remove pldm_pdr_add()
5089. pdr: Remove pldm_pdr_add_fru_record_set()
50910. pdr: Remove pldm_entity_association_pdr_add_from_node()
51011. pdr: Make find_entity_ref_in_tree() static
51112. pdr: Make entity_association_tree_find() static
512
513### Fixed
514
5151. requester: Fix response buffer cast in pldm_send_recv()
5162. pdr: Hoist record handle overflow test to avoid memory leak
5173. transport: Correct comparison in while loop condition
518
519## [0.4.0] - 2023-07-14
520
521### Added
522
5231. bios_table: Introduce pldm_bios_table_append_pad_checksum_check()
5242. fru: Introduce get_fru_record_by_option_check()
5253. pdr: Introduce pldm_entity_association_pdr_add_from_node_check()
5264. pdr: Introduce pldm_pdr_add_check()
5275. pdr: Introduce pldm_pdr_add_fru_record_set_check()
528
529### Changed
530
5311. requester: Mark pldm_close() as LIBPLDM_ABI_TESTING
5322. requester: Expose pldm_close() in header
5333. bios_table: pldm_bios_table_string_entry_encode_check(): Handle overflow
5344. bios_table: pldm_bios_table_iter_create(): Return NULL on failed alloc
5355. bios_table: pldm_bios_table_iter_next(): Invalid entry halts iteration
5366. pdr: pldm_pdr_init(): Return NULL on allocation failure
5377. pdr: pldm_pdr_destroy(): Exit early if repo is NULL
5388. pdr: Document preconditions for trivial accessor functions
539
540   A trivial accessor function is one that exposes properties of an object in a
541   way can't result in an error, beyond passing an invalid argument to the
542   function. For APIs meeting this definition we define a precondition that
543   struct pointers must point to valid objects to avoid polluting the function
544   prototypes. The following APIs now have this precondition explicitly defined:
545
546   - pldm_entity_extract()
547   - pldm_entity_get_parent()
548   - pldm_entity_is_exist_parent()
549   - pldm_entity_is_node_parent()
550   - pldm_is_current_parent_child
551   - pldm_is_empty_entity_assoc_tree()
552   - pldm_pdr_get_record_count()
553   - pldm_pdr_get_record_handle()
554   - pldm_pdr_get_repo_size()
555   - pldm_pdr_record_is_remote()
556
5579. pdr: pldm_entity_node_get_remote_container_id() is a trivial accessor
55810. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Exit early on NULL arguments
55911. pdr: pldm_entity_association_tree_init(): Return NULL on failed alloc
56012. pdr: pldm_entity_association_tree_visit(): Document preconditions
56113. pdr: pldm_entity_association_tree_visit(): Exit early on failure
56214. pdr: pldm_entity_association_tree_destroy(): Exit early on bad argument
56315. pdr: pldm_entity_get_num_children(): Return zero for invalid arguments
56416. pdr: pldm_is_current_parent_child(): Return false for invalid arguments
56517. pdr: pldm_entity_association_pdr_add(): Exit early on bad arguments
56618. pdr: pldm_find_entity_ref_in_tree(): Exit early on bad arguments
56719. pdr: pldm_entity_association_tree_find(): Early exit on bad arguments
56820. pdr: pldm_entity_association_tree_destroy_root(): Exit early on bad arg
56921. pdr: pldm_entity_association_pdr_extract(): Early exit on bad arguments
57022. pdr: pldm_entity_association_pdr_extract(): Assign out params at exit
57123. pdr: pldm_entity_get_num_children(): Don't return invalid values
57224. libpldm: Lift or remove asserts where a subsequent check exists
573
574### Deprecated
575
5761. pldm_bios_table_attr_entry_integer_encode()
577
578   Migrate to pldm_bios_table_attr_entry_integer_encode_check()
579
5802. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_enum()
581
582   Migrate to pldm_bios_table_attr_value_entry_encode_enum_check()
583
5843. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_string()
585
586   Migrate to pldm_bios_table_attr_value_entry_encode_string_check()
587
5884. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_integer()
589
590   Migrate to pldm_bios_table_attr_value_entry_encode_integer_check()
591
5925. pdr: Deprecate is_present()
593
594   There should be no users of this symbol. If you are a user, you should figure
595   out how to stop, or get in touch. This symbol will be marked static the
596   release after deprecation.
597
5986. pdr: Deprecate find_entity_ref_in_tree()
599
600   There should be no users of this symbol. If you are a user, you should figure
601   out how to stop, or get in touch. This symbol will be marked static the
602   release after deprecation.
603
6047. pdr: Deprecate entity_association_tree_find()
605
606   There should be no users of this symbol. If you are a user, you should figure
607   out how to stop, or get in touch. This symbol will be marked static the
608   release after deprecation.
609
6108. bios_table: Stabilise pldm_bios_table_append_pad_checksum_check()
611
612   pldm_bios_table_append_pad_checksum() is deprecated by this change. Users of
613   pldm_bios_table_append_pad_checksum() should migrate to
614   pldm_bios_table_append_pad_checksum_check()
615
6169. fru: Stabilise get_fru_record_by_option_check()
617
618   get_fru_record_by_option() is deprecated by this change. Users of
619   get_fru_record_by_option() should migrate to get_fru_record_by_option_check()
620
62110. pdr: Stabilise pldm_entity_association_pdr_add_from_node_check()
622
623    pldm_entity_association_pdr_add_from_node() is deprecated by this change.
624    Users of pldm_entity_association_pdr_add_from_node() should migrate to
625    pldm_entity_association_pdr_add_from_node_check()
626
62711. pdr: Stabilise pldm_pdr_add_check()
628
629    pldm_pdr_add() is deprecated by this change. Users of pldm_pdr_add() should
630    migrate to pldm_pdr_add_check()
631
63212. pdr: Stabilise pldm_pdr_add_fru_record_set_check()
633
634    pldm_pdr_add_fru_record_set() is deprecated by this change. Users of
635    pldm_pdr_add_fru_record_set() should migrate to
636    pldm_pdr_add_fru_record_set_check()
637
638### Removed
639
6401. bios_table: Remove deprecated APIs sanitized by assert():
641
642   - pldm_bios_table_string_entry_encode()
643   - pldm_bios_table_string_entry_decode_string()
644   - pldm_bios_table_attr_entry_enum_encode()
645   - pldm_bios_table_attr_entry_enum_decode_pv_num()
646   - pldm_bios_table_attr_entry_enum_decode_def_num()
647   - pldm_bios_table_attr_entry_enum_decode_pv_hdls()
648   - pldm_bios_table_attr_entry_string_encode()
649   - pldm_bios_table_attr_entry_string_decode_def_string_length()
650
651### Fixed
652
6531. pdr: Return success for pldm_pdr_find_child_container_id_range_exclude() API
6542. pdr: Rework pldm_pdr_find_container_id_range_exclude() API
6553. transport: mctp-demux: Don't test socket for non-zero value
6564. requester: Return PLDM_REQUESTER_OPEN_FAIL from pldm_open() on error
6575. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Document reality of return
6586. transport: Fix possible NULL ptr deref in pldm_socket_sndbuf_init()
6597. abi: Update to remove pldm_close() from reference dumps
6608. bios_table: Annotate pldm_bios_table_attr_value_entry_encode_integer()
661
662## [0.3.0] - 2023-06-23
663
664### Added
665
6661. Add encode/decode pldmMessagePollEvent data
6672. README: Add a section on working with libpldm
6683. pdr: Introduce remote_container_id and associated APIs
6694. pdr: Add APIs for creating and locating remote PDRs
6705. pdr: Add pldm_pdr_find_last_in_range()
6716. pdr: Add pldm_entity_association_pdr_add_from_node_with_record_handle()
6727. pdr: Add pldm_pdr_find_container_id_range_exclude()
673
674### Changed
675
6761. include: Move installed transport.h under libpldm/
6772. libpldm: Explicit deprecated, stable and testing ABI classes
6783. meson: Reduce strength of oem-ibm requirements from enabled to allowed
679
680   The `oem-ibm` feature is now enabled by the default meson configuration, for
681   CI purposes. `oem-ibm` is still disabled by default in the `libpldm` bitbake
682   recipe:
683
684   <https://github.com/openbmc/openbmc/blob/master/meta-phosphor/recipes-phosphor/libpldm/libpldm_git.bb#L10>
685
686   To disable `oem-ibm` in your development builds, pass `-Doem-ibm=disabled`
687   when invoking `meson setup`
688
6894. bios_table: Relax pldm_bios_table_string_entry_decode_string_check()
6905. bios_table: Relax pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()
691
692### Deprecated
693
6941. bios_table: Deprecate APIs with arguments sanitized using assert()
695
696   C provides enough foot-guns without us encoding them into library APIs.
697   Specifically, deprecate the following in favour of their `*_check()` variants
698   which ensure assertions won't fail or otherwise invoke UB:
699
700   - pldm_bios_table_string_entry_encode()
701   - pldm_bios_table_string_entry_decode_string()
702   - pldm_bios_table_attr_entry_enum_encode()
703   - pldm_bios_table_attr_entry_enum_decode_pv_num()
704   - pldm_bios_table_attr_entry_enum_decode_def_num()
705   - pldm_bios_table_attr_entry_enum_decode_pv_hdls()
706   - pldm_bios_table_attr_entry_string_encode()
707   - pldm_bios_table_attr_entry_string_decode_def_string_length()
708
709### Removed
710
7111. libpldm: Remove the requester-api option
712
713### Fixed
714
7151. requester: Make pldm_open() return existing fd
7162. transport: Prevent sticking in waiting for response
7173. transport: Match on response in pldm_transport_send_recv_msg()
7184. requester: Add check before accessing hdr in pldm_recv()
7195. bios_table: pldm_bios_table_attr_entry_string_info_check() NULL deref
720