Check for Component ID count exceeding 32 to prevent memory corruption in application firmware #23
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
flash_entry
struct type inapplication_processor.c
is used for saving information about provisioned components to flash memory. On the first initialization of the application board it creates an array of all the provisioned components from the header file and usesmemcpy
to copy it toflash_status
, which is then written to flash.The
component_ids
field offlash_entry
is an array of 32 IDs - however, the build tools place no restriction on the number of component IDs that are passed in the arguments. If more than 32 component IDs are passed during the build AP step, the memcpy will write past the struct, corrupting the application's memory and breaking functionality.We're assuming that an application firmware should be able to support more than two components because the detailed specifications do not mention a component count limit for an AP, and the
scan_components
method in the reference design loops through all 127 valid I2C addresses (except reserved ones) to check for the presence of components.