oem-ibm: avoid file read range integer overflow Fix IBM OEM file-read range validation to avoid overflowing the 32-bit offset + length boundary check. A PLDM peer could issue ReadFile with a valid small offset and a large length, such as offset=1 and length=UINT32_MAX. The previous check computed offset + length directly, allowing the sum to wrap and skip the clamp logic. In the generic read path this could trigger an attempt to allocate a response near 4 GiB, causing std::bad_alloc and terminating pldmd. Use the overflow-safe form length > fileSize - offset after the existing offset >= fileSize validation. This preserves the existing clamp-at-EOF behavior while fixing all affected IBM file-read paths, including generic, DMA, and file-by-type reads. Change-Id: I774e0a16b9bf855b73b1456cec9a00e93fcc4cad Signed-off-by: Manjeet Singh <itsmanjeet1998@gmail.com>
PLDM (Platform Level Data Model) is a key component of the OpenBMC project, providing a standardized data model and message formats for various platform management functionalities. It defines a method to manage, monitor, and control the firmware and hardware of a system.
The OpenBMC PLDM project aims to implement the specifications defined by the Distributed Management Task Force (DMTF), allowing for interoperable management interfaces across different hardware and firmware components.
To build and run PLDM, you need the following dependencies:
MesonNinjaAlternatively, source an OpenBMC ARM/x86 SDK.
To build the PLDM project, follow these steps:
meson setup build && meson compile -C build
The simplest way of running the tests is as described by the meson man page:
meson test -C build
Alternatively, tests can be run in the OpenBMC CI docker container using these steps.
pldm daemon accepts a command line argument --verbose or --v or -v to enable the daemon to run in verbose mode. It can be done via adding this option to the environment file that pldm service consumes.
echo 'PLDMD_ARGS="--verbose"' > /etc/default/pldmd systemctl restart pldmd
rm /etc/default/pldmd systemctl restart pldmd
For complete documentation on the functionality and usage of this repository, please refer to the docs folder.