commit | 0a4b3f2d907794ae5f40298046824911362d9a50 | [log] [tgz] |
---|---|---|
author | Lawrence Tang <lawrence.tang@arm.com> | Thu Jul 21 10:40:10 2022 +0100 |
committer | Lawrence Tang <lawrence.tang@arm.com> | Thu Jul 21 10:40:10 2022 +0100 |
tree | 67cd098feb8cfcca96ea4e804b6f6e554e36f645 | |
parent | e29006a8cb19b1b6a97c2f756f9e3391de5da31c [diff] |
Fix bugs appearing from fuzzing.
This repository specifies a structure for representing UEFI CPER records (as described in UEFI Specification Appendix N) in a human-readable JSON format, in addition to a library which can readily convert back and forth between the standard CPER binary format and the specified structured JSON.
This project uses CMake (>=3.10). To build, simply run:
cmake . make
A static library file for the parsing library will be written to lib/
, and test executables will be written to bin/
.
This project comes with several binaries to help you deal with CPER binary and CPER-JSON. The first of these is cper-convert
, which is a command line tool that can be found in bin/
. With this, you can convert to and from CPER and CPER-JSON through the command line. An example usage scenario is below:
cper-convert to-cper samples/cper-json-test-arm.json --out cper.dump cper-convert to-json cper.generated.dump
Another tool bundled with this repository is cper-generate
, which is another command line tool found in bin/
. This allows you to generate psuedo-random valid CPER records with sections of specified types for testing purposes. An example use of the program is below:
cper-generate --out cper.generated.dump --sections generic ia32x64
Help for both of these tools can be accessed through using the --help
flag in isolation.
Finally, a static library containing symbols for converting CPER and CPER-JSON between an intermediate JSON format can be found generated in lib/
. This contains the following useful library symbols:
json_object* cper_to_ir(FILE* cper_file); void ir_to_cper(json_object* ir, FILE* out);
The specification for this project can be found in specification/
. Specification for the CPER binary format can be found in UEFI Specification Appendix N (2021/03/18).