mirror of https://github.com/wolfSSL/wolfBoot.git
keystore_get_size() returned slot->pubkey_size verbatim from the OTP keystore slot with no upper bound. A corrupted or mis-provisioned slot with pubkey_size > KEYSTORE_PUBKEY_SIZE produces a positive value that passes every caller guard (pubkey_sz < 0 / <= 0). The callers in image.c (key_sha256/key_sha384/key_sha3_384 and the ECC verify y-coordinate offset) then read past otp_slot_item_cache, which only holds KEYSTORE_PUBKEY_SIZE pubkey bytes. Reject an out-of-range pubkey_size by returning -1, matching the existing defensive validation of item_count in keystore_num_pubkeys() and the -1 error convention the callers already handle. Add unit-otp-keystore, which compiles flash_otp_keystore.c in isolation and verifies keystore_get_size() rejects oversized slots. |
||
|---|---|---|
| .. | ||
| Makefile | ||
| README.md | ||
| gpt-sfdisk-test.h | ||
| target.h | ||
| txt_filler.h | ||
| unit-boot-x86_fsp.c | ||
| unit-common.c | ||
| unit-delta.c | ||
| unit-disk.c | ||
| unit-enc-nvm.c | ||
| unit-extflash.c | ||
| unit-fdt.c | ||
| unit-fit-fpga.c | ||
| unit-fit-gzip.c | ||
| unit-flash-erase-h7.c | ||
| unit-fwtpm-stub.c | ||
| unit-gzip.c | ||
| unit-image.c | ||
| unit-keygen-xmss-params.c | ||
| unit-keystore.c | ||
| unit-linux-loader-e820.c | ||
| unit-linux-loader-syssize.c | ||
| unit-loader-tpm-init.c | ||
| unit-max-space.c | ||
| unit-mock-flash.c | ||
| unit-mock-state.c | ||
| unit-mpusize.c | ||
| unit-multiboot.c | ||
| unit-nvm.c | ||
| unit-otp-keystore.c | ||
| unit-parser.c | ||
| unit-pci.c | ||
| unit-pkcs11_store.c | ||
| unit-policy-create.c | ||
| unit-policy-sign.c | ||
| unit-psa_store.c | ||
| unit-qspi-flash.c | ||
| unit-rot-auth.c | ||
| unit-sdhci-disk-unaligned.c | ||
| unit-sdhci-response-bits.c | ||
| unit-sectorflags.c | ||
| unit-sign-delta-cert-inv-off.py | ||
| unit-sign-delta-tlv.py | ||
| unit-sign-encrypted-output.c | ||
| unit-sign-encrypted-output.mkfrag | ||
| unit-spi-flash.c | ||
| unit-store-sbrk.c | ||
| unit-string.c | ||
| unit-tpm-api-names.c | ||
| unit-tpm-blob.c | ||
| unit-tpm-check-rot-auth.c | ||
| unit-tpm-rsa-exp.c | ||
| unit-uart-flash.c | ||
| unit-update-disk.c | ||
| unit-update-flash.c | ||
| unit-update-ram-nofixed.c | ||
| unit-update-ram.c | ||
README.md
Unit Test Tools
This uses the "check" unit test framework for C.
You may need to run "apt install check", "yum install check" or "brew install check".
Building
Use make to build.
Expected output
$ ./unit-parser
Running suite(s): wolfBoot
Explicit end of options reached
This field is too large (bigger than the space available in the current header)
This field is too large and would overflow the image header
Illegal address (too high)
Illegal address (too high)
100%: Checks: 2, Failures: 0, Errors: 0