Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixed logic related to DxeCore only advanced logger (#359)
## Description When using advanced logger starting from DxeCore, the library constructor will allocate space for the advanced logger buffer. When this allocation takes place, the associated global variable `mMaxAddress` will be created to specify the last address for the log buffer. In the DxeCore case, the calculation for `mMaxAddress` did not take into account the size of the `ADVANCED_LOGGER_INFO` structure that is at the start of the buffer, resulting in an inconsistent address between `mMaxAddress` and `LoggerInfo->LogBuffer + LoggerInfo->LogBufferSize` All other instances of this code use `LoggerInfo->LogBuffer + LoggerInfo->LogBufferSize`, so change DxeCore library instance to use the same logic as other library instances. For each item, place an "x" in between `[` and `]` if true. Example: `[x]`. _(you can also check items in the GitHub UI)_ - [X] Impacts functionality? - **Functionality** - Does the change ultimately impact how firmware functions? - Examples: Add a new library, publish a new PPI, update an algorithm, ... - [ ] Impacts security? - **Security** - Does the change have a direct security impact on an application, flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter validation improvement, ... - [ ] Breaking change? - **Breaking change** - Will anyone consuming this change experience a break in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call a function in a new library class in a pre-existing module, ... - [ ] Includes tests? - **Tests** - Does the change include any explicit test code? - Examples: Unit tests, integration tests, robot tests, ... - [ ] Includes documentation? - **Documentation** - Does the change contain explicit documentation additions outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation on an a separate Web page, ... ## How This Was Tested Found by setting debug messages to such a high level that the end of the buffer was reached, resulting in incorrect checks of `mMaxAddress` overwriting the end of the buffer. Incorrect logic was tripped up in `ValidateInfoBlock()` where `mMaxAddress` would cause a return of `false`, which in turn would result in NULL being returned from an arbitrary call to `AdvancedLoggerGetLoggerInfo`. ## Integration Instructions n/a
- Loading branch information