xref: /openbmc/libpldm/CHANGELOG.md (revision 5a5129b0)
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