xref: /openbmc/libpldm/CHANGELOG.md (revision cf9a2df3)
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
669. Add Firmware Device side firmware_update encode/decode functions
67
68### Fixed
69
701. dsp: platform: Fix location of closing paren in overflow detection
712. libpldm: Install api header, update changelog
72
73## [0.10.0] 2024-11-01
74
75### Added
76
771. oem: meta: Add decode_oem_meta_file_io_write_req()
782. oem: meta: Add decode_oem_meta_file_io_read_req()
793. oem: meta: Add encode_oem_meta_file_io_read_resp()
804. pdr: Add pldm_entity_association_pdr_remove_contained_entity()
815. pdr: Add pldm_pdr_remove_fru_record_set_by_rsi()
826. pldm_entity_association_tree_copy_root_check()
837. oem: ibm: Add topology related state set and enum
84
858. base: Add size and buffer macros for struct pldm_msg
86
87   Together these macros reduce the need for use of reinterpret_cast<>() in C++.
88
899. entity: Add new entity types from DSP0249 v1.3.0
9010. stateset: Add new state sets from DSP0249 v1.3.0
91
92### Changed
93
941. dsp: bios_table: Null check for pldm_bios_table_iter_is_end()
95
96   pldm_bios_table_iter_is_end() now returns true if the provided argument is
97   NULL.
98
992. Register assignment for parameters of a number of APIs changed with increased
100   scrutiny on their implementations.
101
102   - `decode_entity_auxiliary_names_pdr()`
103   - `decode_get_state_sensor_readings_resp()`
104   - `decode_oem_meta_file_io_req()`
105   - `decode_platform_event_message_req()`
106   - `decode_platform_event_message_resp()`
107   - `decode_sensor_op_data()`
108   - `encode_get_state_effecter_states_resp()`
109   - `encode_state_effecter_pdr()`
110   - `encode_state_sensor_pdr()`
111   - `pldm_bios_table_append_pad_checksum()`
112   - `pldm_bios_table_attr_value_entry_encode_enum()`
113   - `pldm_bios_table_attr_value_entry_encode_string()`
114   - `pldm_pdr_find_record()`
115   - `pldm_pdr_get_next_record()`
116
1173. platform: Support PLDM_CPER_EVENT in encode_platform_event_message_req()
118
1194. dsp: firmware_update: Bounds check
120   decode_downstream_device_parameter_table_entry_versions()
121
122   The additional bounds-checking required the addition of further length
123   parameters.
124
125### Deprecated
126
1271. oem: meta: Deprecate `decode_oem_meta_file_io_req()`
128
129   Users should switch to `decode_oem_meta_file_io_write_req()`. Modify this
130   function to make it safer.
131
132   Modification:
133
134   - The meaning of the returned result.
135   - Change parameters from individual pointers to a struct.
136   - Check the length provided in the message won't exceed the buffer.
137
1382. pldm_entity_association_tree_copy_root()
139
140   The implementation allocates, but gives no indication to the caller if an
141   allocation (and hence the copy) has failed. Users should migrate to
142   pldm_entity_association_tree_copy_root_check().
143
1443. The following APIs are deprecated as unsafe due to various unfixable CWE
145   violations:
146
147   - [CWE-129: Improper Validation of Array Index](https://cwe.mitre.org/data/definitions/129.html)
148
149     - `encode_get_bios_current_value_by_handle_resp()`
150     - `encode_get_bios_table_resp()`
151     - `encode_get_file_table_resp()`
152     - `encode_get_version_resp()`
153     - `pldm_bios_table_attr_entry_enum_decode_def_indices()`
154     - `pldm_bios_table_attr_entry_enum_decode_def_num()`
155     - `pldm_bios_table_attr_find_by_handle()`
156     - `pldm_bios_table_attr_find_by_string_handle()`
157     - `pldm_bios_table_attr_value_find_by_handle()`
158     - `pldm_bios_table_iter_create()`
159     - `pldm_bios_table_iter_is_end()`
160     - `pldm_bios_table_string_find_by_handle()`
161     - `pldm_bios_table_string_find_by_string()`
162
163   - [CWE-617: Reachable Assertion](https://cwe.mitre.org/data/definitions/617.html)
164
165     - `pldm_entity_association_tree_copy_root()`
166
167   - [CWE-789: Memory Allocation with Excessive Size Value](https://cwe.mitre.org/data/definitions/789.html)
168
169     - `decode_oem_meta_file_io_req()`
170
171   - [CWE-823: Use of Out-of-range Pointer Offset](https://cwe.mitre.org/data/definitions/823.html)
172     - `encode_fru_record()`
173     - `encode_get_pdr_resp()`
174     - `pldm_bios_table_attr_entry_enum_encode_length()`
175
176### Removed
177
1781. Deprecated functions with the `_check` suffix
179
180   - `get_fru_record_by_option_check()`
181   - `pldm_bios_table_append_pad_checksum_check()`
182   - `pldm_bios_table_attr_entry_enum_decode_def_num_check()`
183   - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()`
184   - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()`
185   - `pldm_bios_table_attr_entry_enum_encode_check()`
186   - `pldm_bios_table_attr_entry_integer_encode_check()`
187   - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()`
188   - `pldm_bios_table_attr_entry_string_encode_check()`
189   - `pldm_bios_table_attr_value_entry_encode_enum_check()`
190   - `pldm_bios_table_attr_value_entry_encode_integer_check()`
191   - `pldm_bios_table_attr_value_entry_encode_string_check()`
192   - `pldm_bios_table_string_entry_decode_string_check()`
193   - `pldm_bios_table_string_entry_encode_check()`
194   - `pldm_entity_association_pdr_add_check()`
195   - `pldm_entity_association_pdr_add_from_node_check()`
196   - `pldm_pdr_add_check()`
197   - `pldm_pdr_add_fru_record_set_check()`
198
199### Fixed
200
2011. dsp: bios_table: Null check for pldm_bios_table_iter_is_end()
202
203   Avoid a caller-controlled NULL pointer dereference in the library
204   implementation.
205
2062. platform: fix encode/decode_poll_for_platform_event_message_req
207
208   Update checking of `TransferOperationFlag` and `eventIDToAcknowledge` to
209   follow spec.
210
2113. platform: Fix checking `eventIDToAcknowledge`
212
213   As the event receiver sends `PollForPlatformEventMessage` with the
214   `tranferFlag` is `AcknowledgementOnly`, the value `eventIDToAcknowledge`
215   should be the previously retrieved eventID (from the PLDM terminus).
216
2174. dsp: platform: Prevent overflow of arithmetic on event_data_length
2185. dsp: platform: Bounds check encode_sensor_state_pdr()
2196. dsp: platform: Bounds check encode_state_effecter_pdr()
2207. dsp: pdr: Bounds check pldm_entity_association_pdr_extract()
2218. dsp: bios_table: Bounds check pldm_bios_table_append_pad_checksum()
2229. dsp: bios_table: Bounds check
223   pldm_bios_table_attr_value_entry_encode_string()
22410. dsp: bios_table: Bounds check pldm_bios_table_attr_value_entry_encode_enum()
22511. dsp: firmware_update: Bounds check
226    decode_downstream_device_parameter_table_entry_versions()
22712. oem: ibm: platform: Bounds check encode_bios_attribute_update_event_req()
22813. dsp: fru: Bounds check encode_get_fru_record_by_option_resp()
22914. dsp: fru: Bounds check encode_fru_record()
23015. dsp: bios: Bounds check encode_set_bios_table_req()
23116. dsp: bios: Bounds check encode_set_bios_attribute_current_value_req()
23217. dsp: bios_table: Bounds check pldm_bios_table_string_entry_encode()
23318. dsp: pdr: Rework test in pldm_entity_association_pdr_extract()
23419. dsp: platform: Fix decode_set_event_receiver_req()
235
236## [0.9.1] - 2024-09-07
237
238### Changed
239
2401. Moved evolutions intended for v0.9.0 into place
241
242   Evolutions for the release have been moved from `evolutions/current` to
243   `evolutions/v0.9.1`. Library users can apply them to migrate off of
244   deprecated APIs.
245
246## [0.9.0] - 2024-09-07
247
248### Added
249
2501. base: Define macros for reserved TIDs
2512. pdr: Add pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
2523. pdr: Add pldm_entity_association_pdr_create_new()
2534. platform: Define macros for the responded transferflags
2545. pdr: Add pldm_pdr_get_terminus_handle() API
2556. pdr: Add related decode_entity_auxiliary_names_pdr() APIs
2567. fw_update: Add encode req & decode resp for get_downstream_fw_params
2578. platform: Add decode_pldm_platform_cper_event() API
2589. decode_get_pdr_repository_info_resp_safe()
259
260   Replaces decode_get_pdr_repository_info_resp() as discussed in the
261   `Deprecated` section below
262
26310. decode_get_pdr_resp_safe()
264
265    Replaces decode_get_pdr_resp() as discussed in the `Deprecated` section
266    below
267
268### Changed
269
2701. pdr: Stabilise related decode_entity_auxiliary_names_pdr() APIs
2712. platform: Rework decode/encode_pldm_message_poll_event_data() APIs
2723. platform: Stabilise decode_pldm_message_poll_event_data() APIs
2734. ABI break for decode_sensor_op_data()
274
275   Applying LIBPLDM_CC_NONNULL to the internal msgbuf APIs caused
276   abi-compliance-checker to flag a change in the register containing the
277   parameter `previous_op_state`.
278
2795. platform: Stabilise decode_pldm_platform_cper_event() API
2806. oem: meta: Stabilise decode_oem_meta_file_io_write_req() API
2817. oem: meta: Stabilise decode_oem_meta_file_io_read_req() API
2828. oem: meta: Stabilise encode_oem_meta_file_io_read_resp() API
283
284### Deprecated
285
2861. Rename and deprecate functions with the `_check` suffix
287
288   All library function return values always need to be checked. The `_check`
289   suffix is redundant, so remove it. Migration to the non-deprecated
290   equivalents without the `_check` suffix can be performed using
291   `scripts/ apply-renames` and the [clang-rename][] configurations under
292   `evolutions/`
293
294   The deprecated functions:
295
296   - `get_fru_record_by_option_check()`
297   - `pldm_bios_table_append_pad_checksum_check()`
298   - `pldm_bios_table_attr_entry_enum_decode_def_num_check()`
299   - `pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()`
300   - `pldm_bios_table_attr_entry_enum_decode_pv_num_check()`
301   - `pldm_bios_table_attr_entry_enum_encode_check()`
302   - `pldm_bios_table_attr_entry_integer_encode_check()`
303   - `pldm_bios_table_attr_entry_string_decode_def_string_length_check()`
304   - `pldm_bios_table_attr_entry_string_encode_check()`
305   - `pldm_bios_table_attr_value_entry_encode_enum_check()`
306   - `pldm_bios_table_attr_value_entry_encode_integer_check()`
307   - `pldm_bios_table_attr_value_entry_encode_string_check()`
308   - `pldm_bios_table_string_entry_decode_string_check()`
309   - `pldm_bios_table_string_entry_encode_check()`
310   - `pldm_entity_association_pdr_add_check()`
311   - `pldm_entity_association_pdr_add_from_node_check()`
312   - `pldm_pdr_add_check()`
313   - `pldm_pdr_add_fru_record_set_check()`
314
315[clang-rename]: https://clang.llvm.org/extra/clang-rename.html
316
3172. `decode_get_pdr_repository_info_resp()`
318
319   Users should move to `decode_get_pdr_repository_info_resp_safe()` which
320   eliminates the opportunity for buffer overruns when extracting objects from
321   the message.
322
3233. `decode_get_pdr_resp()`
324
325   Users should move to `decode_get_pdr_resp_safe()` which reduces the
326   invocation tedium and improves memory safety over `decode_get_pdr_resp()`.
327
328### Removed
329
3301. IBM OEM header compatibility symlinks.
331
332   Anyone left using the deprecated paths can migrate using the coccinelle patch
333   at `evolutions/current/oem-ibm-header-compat.cocci`.
334
335### Fixed
336
3371. requester: instance-id: Release read lock on conflict
3382. pdr: Error propagation for
339   pldm_entity_association_pdr_add_from_node_with_record_handle()
340
341## [0.8.0] - 2024-05-23
342
343### Added
344
3451. base: Provide pldm_msg_hdr_correlate_response()
3462. transport: af-mctp: Add pldm_transport_af_mctp_bind()
3473. oem: ibm: Add chapdata file type support
3484. base: Added PLDM_SMBIOS & PLDM_RDE message types
3495. oem: meta: Add decode_oem_meta_file_io_req()
3506. state-set: Add all state set values to system power state enum as per DSP0249
3517. platform: Add alias members to the enum
352   pldm_pdr_repository_chg_event_change_record_event_data_operation.
353
354   enum constants with inconsistent names are deprecated with this change.
355   remove old inconsistent enum members after backward compatibility cleanup is
356   done
357
3588. oem-ibm: Alias `pldm_oem_ibm_fru_field_type` members as `PLDM_OEM_IBM_*`
3599. oem: ibm: Add Firmware Update Access Key(UAK) as a FRU field type
36010. platform: Add 3 PDR type enum for Redfish Device Enablement per
361    DSP0248_1.2.0
36211. state_set: Add CONNECTED and DISCONNECTED enum for Link State set
36312. entity: Add enum for Network Interface Connectors and Network Ports
364    Connection Types
36513. pdr: Add decode_numeric_effecter_pdr_data()
36614. oem: ibm: Support for the Real SAI entity id
36715. fw_update: Add encode req & decode resp for query_downstream_devices
36816. fw_update: Add encode req & decode resp for query_downstream_identifiers
36917. platform: Add support for GetStateEffecterStates command
370
371### Changed
372
3731. base: Stabilise pldm_msg_hdr_correlate_response()
3742. transport: af-mctp: Stabilise pldm_transport_af_mctp_bind()
3753. libpldm: Fix header use
3764. libpldm: More fixes for header use
3775. pdr: Stabilise pldm_pdr_find_last_in_range() API
3786. pdr: Stabilise pldm_entity_association_pdr_add_from_node_with_record_handle()
3797. oem: meta: stabilise decode_oem_meta_file_io_req()
3808. pdr: pldm_entity_association_tree_copy_root(): Document preconditions
381
382### Deprecated
383
3841. Deprecate `pldm_oem_ibm_fru_field_type` members that that are not prefixed
385   with `PLDM_OEM_IBM_`
386
387### Fixed
388
3891. libpldm: Rationalise the local and installed path of pldm.h
3902. pdr: Assign record_handle in entity_association_pdr_add_children()
3913. msgbuf: Require sensor data enum in pldm_msgbuf_extract_sensor_value()
3924. pdr: Remove redundant constant for minimum numeric sensor PDR length
3935. tests: oem: meta: Fix fileio use of msgbuf
394
395## [0.7.0] - 2023-08-29
396
397### Added
398
3991. state-set: Add new enum for Operational Fault Status enum
400
401### Changed
402
4031. transport: Match specified metadata in pldm_transport_send_recv_msg()
4042. transport: mctp-demux: Drop ABI annotation for internal symbols
4053. transport: Stabilise core transport and implementation APIs
406
407   This stabilisation covers the following headers and functions:
408
409   - libpldm/transport.h
410
411     - pldm_transport_poll()
412     - pldm_transport_send_msg()
413     - pldm_transport_recv_msg()
414     - pldm_transport_send_recv_msg()
415
416   - libpldm/transport/af-mctp.h
417
418     - pldm_transport_af_mctp_init()
419     - pldm_transport_af_mctp_destroy()
420     - pldm_transport_af_mctp_core()
421     - pldm_transport_af_mctp_init_pollfd()
422     - pldm_transport_af_mctp_map_tid()
423     - pldm_transport_af_mctp_unmap_tid()
424
425   - libpldm/transport/mctp-demux.h
426     - pldm_transport_mctp_demux_init()
427     - pldm_transport_mctp_demux_destroy()
428     - pldm_transport_mctp_demux_core()
429     - pldm_transport_mctp_demux_init_pollfd()
430     - pldm_transport_mctp_demux_map_tid()
431     - pldm_transport_mctp_demux_unmap_tid()
432
433### Deprecated
434
4351. All the existing "requester" APIs from `libpldm/pldm.h` (also known as
436   `libpldm/requester/pldm.h`):
437
438   - pldm_open()
439   - pldm_send_recv()
440   - pldm_send()
441   - pldm_recv()
442   - pldm_recv_any()
443   - pldm_close()
444
445   Users should migrate to the newer "transport" APIs instead.
446
447## Fixed
448
4491. tests: Exclude transport tests when build excludes testing ABIs
4502. abi: Capture deprecation of pldm_close()
451
452## [0.6.0] - 2023-08-22
453
454### Changed
455
4561. pdr: Avoid ID overflow in pldm_entity_association_tree_add_entity()
4572. meson: Apply `b_ndebug=if-release` by default
4583. pdr : Stabilize pldm_entity_association_tree_add_entity()
4594. pdr: Stabilise pldm_entity_association_tree_find_with_locality()
4605. pdr: Stabilize pldm_entity_node_get_remote_container_id()
4616. transport: af-mctp: Assign out-params on success in \*\_recv()
4627. transport: Generalise the pldm_transport_recv_msg() API
463
464### Removed
465
4661. pdr: Remove pldm_entity_association_pdr_add()
4672. state-set: Remove enum pldm_state_set_operational_fault_status_values
468
469### Fixed
470
4711. transport: register init_pollfd callback for af-mctp
4722. transport: fix init_pollfd function parameter
4733. transport: Fix doxygen and variables for send and recv functions
4744. transport: af-mctp: Ensure malloc() succeeds in \*\_recv()
475
476## [0.5.0] - 2023-08-09
477
478### Added
479
4801. pdr: Introduce pldm_entity_association_pdr_add_check()
481
482### Changed
483
4841. pdr: Allow record_handle to be NULL for pldm_pdr_add_check()
4852. transport: pldm_transport_poll(): Adjust return value semantics
4863. transport: free un-wanted responses in pldm_transport_send_recv_msg()
487
488### Deprecated
489
4901. state-set: Enum pldm_state_set_operational_fault_status_values
491
492   The enum operational_fault_status is defined with wrong members and will
493   eventually be replaced with the correct members. Any uses of
494   pldm_state_set_operational_fault_status_values members should move to
495   equivalent pldm_state_set_operational_stress_status_values members if needed.
496
4972. platform: Struct field name in fru_record_set PDR
498
499   References to entity_instance_num should be changed to entity_instance
500
5013. platform: Struct field name in numeric sensor value PDR
502
503   References to entity_instance_num should be changed to entity_instance
504
505### Removed
506
5071. bios_table: Remove pldm_bios_table_attr_entry_integer_encode_length()
5082. bios_table: Remove pldm_bios_table_attr_value_entry_encode_enum()
5093. bios_table: Remove pldm_bios_table_attr_value_entry_encode_string()
5104. bios_table: Remove pldm_bios_table_attr_value_entry_encode_integer()
5115. bios_table: Remove pldm_bios_table_append_pad_checksum()
5126. fru: Remove get_fru_record_by_option()
5137. pdr: Make is_present() static
5148. pdr: Remove pldm_pdr_add()
5159. pdr: Remove pldm_pdr_add_fru_record_set()
51610. pdr: Remove pldm_entity_association_pdr_add_from_node()
51711. pdr: Make find_entity_ref_in_tree() static
51812. pdr: Make entity_association_tree_find() static
519
520### Fixed
521
5221. requester: Fix response buffer cast in pldm_send_recv()
5232. pdr: Hoist record handle overflow test to avoid memory leak
5243. transport: Correct comparison in while loop condition
525
526## [0.4.0] - 2023-07-14
527
528### Added
529
5301. bios_table: Introduce pldm_bios_table_append_pad_checksum_check()
5312. fru: Introduce get_fru_record_by_option_check()
5323. pdr: Introduce pldm_entity_association_pdr_add_from_node_check()
5334. pdr: Introduce pldm_pdr_add_check()
5345. pdr: Introduce pldm_pdr_add_fru_record_set_check()
535
536### Changed
537
5381. requester: Mark pldm_close() as LIBPLDM_ABI_TESTING
5392. requester: Expose pldm_close() in header
5403. bios_table: pldm_bios_table_string_entry_encode_check(): Handle overflow
5414. bios_table: pldm_bios_table_iter_create(): Return NULL on failed alloc
5425. bios_table: pldm_bios_table_iter_next(): Invalid entry halts iteration
5436. pdr: pldm_pdr_init(): Return NULL on allocation failure
5447. pdr: pldm_pdr_destroy(): Exit early if repo is NULL
5458. pdr: Document preconditions for trivial accessor functions
546
547   A trivial accessor function is one that exposes properties of an object in a
548   way can't result in an error, beyond passing an invalid argument to the
549   function. For APIs meeting this definition we define a precondition that
550   struct pointers must point to valid objects to avoid polluting the function
551   prototypes. The following APIs now have this precondition explicitly defined:
552
553   - pldm_entity_extract()
554   - pldm_entity_get_parent()
555   - pldm_entity_is_exist_parent()
556   - pldm_entity_is_node_parent()
557   - pldm_is_current_parent_child
558   - pldm_is_empty_entity_assoc_tree()
559   - pldm_pdr_get_record_count()
560   - pldm_pdr_get_record_handle()
561   - pldm_pdr_get_repo_size()
562   - pldm_pdr_record_is_remote()
563
5649. pdr: pldm_entity_node_get_remote_container_id() is a trivial accessor
56510. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Exit early on NULL arguments
56611. pdr: pldm_entity_association_tree_init(): Return NULL on failed alloc
56712. pdr: pldm_entity_association_tree_visit(): Document preconditions
56813. pdr: pldm_entity_association_tree_visit(): Exit early on failure
56914. pdr: pldm_entity_association_tree_destroy(): Exit early on bad argument
57015. pdr: pldm_entity_get_num_children(): Return zero for invalid arguments
57116. pdr: pldm_is_current_parent_child(): Return false for invalid arguments
57217. pdr: pldm_entity_association_pdr_add(): Exit early on bad arguments
57318. pdr: pldm_find_entity_ref_in_tree(): Exit early on bad arguments
57419. pdr: pldm_entity_association_tree_find(): Early exit on bad arguments
57520. pdr: pldm_entity_association_tree_destroy_root(): Exit early on bad arg
57621. pdr: pldm_entity_association_pdr_extract(): Early exit on bad arguments
57722. pdr: pldm_entity_association_pdr_extract(): Assign out params at exit
57823. pdr: pldm_entity_get_num_children(): Don't return invalid values
57924. libpldm: Lift or remove asserts where a subsequent check exists
580
581### Deprecated
582
5831. pldm_bios_table_attr_entry_integer_encode()
584
585   Migrate to pldm_bios_table_attr_entry_integer_encode_check()
586
5872. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_enum()
588
589   Migrate to pldm_bios_table_attr_value_entry_encode_enum_check()
590
5913. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_string()
592
593   Migrate to pldm_bios_table_attr_value_entry_encode_string_check()
594
5954. bios_table: Deprecate pldm_bios_table_attr_value_entry_encode_integer()
596
597   Migrate to pldm_bios_table_attr_value_entry_encode_integer_check()
598
5995. pdr: Deprecate is_present()
600
601   There should be no users of this symbol. If you are a user, you should figure
602   out how to stop, or get in touch. This symbol will be marked static the
603   release after deprecation.
604
6056. pdr: Deprecate find_entity_ref_in_tree()
606
607   There should be no users of this symbol. If you are a user, you should figure
608   out how to stop, or get in touch. This symbol will be marked static the
609   release after deprecation.
610
6117. pdr: Deprecate entity_association_tree_find()
612
613   There should be no users of this symbol. If you are a user, you should figure
614   out how to stop, or get in touch. This symbol will be marked static the
615   release after deprecation.
616
6178. bios_table: Stabilise pldm_bios_table_append_pad_checksum_check()
618
619   pldm_bios_table_append_pad_checksum() is deprecated by this change. Users of
620   pldm_bios_table_append_pad_checksum() should migrate to
621   pldm_bios_table_append_pad_checksum_check()
622
6239. fru: Stabilise get_fru_record_by_option_check()
624
625   get_fru_record_by_option() is deprecated by this change. Users of
626   get_fru_record_by_option() should migrate to get_fru_record_by_option_check()
627
62810. pdr: Stabilise pldm_entity_association_pdr_add_from_node_check()
629
630    pldm_entity_association_pdr_add_from_node() is deprecated by this change.
631    Users of pldm_entity_association_pdr_add_from_node() should migrate to
632    pldm_entity_association_pdr_add_from_node_check()
633
63411. pdr: Stabilise pldm_pdr_add_check()
635
636    pldm_pdr_add() is deprecated by this change. Users of pldm_pdr_add() should
637    migrate to pldm_pdr_add_check()
638
63912. pdr: Stabilise pldm_pdr_add_fru_record_set_check()
640
641    pldm_pdr_add_fru_record_set() is deprecated by this change. Users of
642    pldm_pdr_add_fru_record_set() should migrate to
643    pldm_pdr_add_fru_record_set_check()
644
645### Removed
646
6471. bios_table: Remove deprecated APIs sanitized by assert():
648
649   - pldm_bios_table_string_entry_encode()
650   - pldm_bios_table_string_entry_decode_string()
651   - pldm_bios_table_attr_entry_enum_encode()
652   - pldm_bios_table_attr_entry_enum_decode_pv_num()
653   - pldm_bios_table_attr_entry_enum_decode_def_num()
654   - pldm_bios_table_attr_entry_enum_decode_pv_hdls()
655   - pldm_bios_table_attr_entry_string_encode()
656   - pldm_bios_table_attr_entry_string_decode_def_string_length()
657
658### Fixed
659
6601. pdr: Return success for pldm_pdr_find_child_container_id_range_exclude() API
6612. pdr: Rework pldm_pdr_find_container_id_range_exclude() API
6623. transport: mctp-demux: Don't test socket for non-zero value
6634. requester: Return PLDM_REQUESTER_OPEN_FAIL from pldm_open() on error
6645. pdr: pldm_pdr_fru_record_set_find_by_rsi(): Document reality of return
6656. transport: Fix possible NULL ptr deref in pldm_socket_sndbuf_init()
6667. abi: Update to remove pldm_close() from reference dumps
6678. bios_table: Annotate pldm_bios_table_attr_value_entry_encode_integer()
668
669## [0.3.0] - 2023-06-23
670
671### Added
672
6731. Add encode/decode pldmMessagePollEvent data
6742. README: Add a section on working with libpldm
6753. pdr: Introduce remote_container_id and associated APIs
6764. pdr: Add APIs for creating and locating remote PDRs
6775. pdr: Add pldm_pdr_find_last_in_range()
6786. pdr: Add pldm_entity_association_pdr_add_from_node_with_record_handle()
6797. pdr: Add pldm_pdr_find_container_id_range_exclude()
680
681### Changed
682
6831. include: Move installed transport.h under libpldm/
6842. libpldm: Explicit deprecated, stable and testing ABI classes
6853. meson: Reduce strength of oem-ibm requirements from enabled to allowed
686
687   The `oem-ibm` feature is now enabled by the default meson configuration, for
688   CI purposes. `oem-ibm` is still disabled by default in the `libpldm` bitbake
689   recipe:
690
691   <https://github.com/openbmc/openbmc/blob/master/meta-phosphor/recipes-phosphor/libpldm/libpldm_git.bb#L10>
692
693   To disable `oem-ibm` in your development builds, pass `-Doem-ibm=disabled`
694   when invoking `meson setup`
695
6964. bios_table: Relax pldm_bios_table_string_entry_decode_string_check()
6975. bios_table: Relax pldm_bios_table_attr_entry_enum_decode_pv_hdls_check()
698
699### Deprecated
700
7011. bios_table: Deprecate APIs with arguments sanitized using assert()
702
703   C provides enough foot-guns without us encoding them into library APIs.
704   Specifically, deprecate the following in favour of their `*_check()` variants
705   which ensure assertions won't fail or otherwise invoke UB:
706
707   - pldm_bios_table_string_entry_encode()
708   - pldm_bios_table_string_entry_decode_string()
709   - pldm_bios_table_attr_entry_enum_encode()
710   - pldm_bios_table_attr_entry_enum_decode_pv_num()
711   - pldm_bios_table_attr_entry_enum_decode_def_num()
712   - pldm_bios_table_attr_entry_enum_decode_pv_hdls()
713   - pldm_bios_table_attr_entry_string_encode()
714   - pldm_bios_table_attr_entry_string_decode_def_string_length()
715
716### Removed
717
7181. libpldm: Remove the requester-api option
719
720### Fixed
721
7221. requester: Make pldm_open() return existing fd
7232. transport: Prevent sticking in waiting for response
7243. transport: Match on response in pldm_transport_send_recv_msg()
7254. requester: Add check before accessing hdr in pldm_recv()
7265. bios_table: pldm_bios_table_attr_entry_string_info_check() NULL deref
727