diff --git a/.github/workflows/cargo_fmt.yml b/.github/workflows/cargo_fmt.yml index 59757a4..fa04d31 100644 --- a/.github/workflows/cargo_fmt.yml +++ b/.github/workflows/cargo_fmt.yml @@ -43,6 +43,12 @@ jobs: with: command: fmt args: --manifest-path libraries/cbor/Cargo.toml --all -- --check + + - name: Cargo format libraries/cbor/fuzz + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --manifest-path libraries/cbor/fuzz/Cargo.toml --all -- --check - name: Cargo format libraries/crypto uses: actions-rs/cargo@v1 diff --git a/libraries/cbor/fuzz/Cargo.toml b/libraries/cbor/fuzz/Cargo.toml new file mode 100644 index 0000000..e1374e6 --- /dev/null +++ b/libraries/cbor/fuzz/Cargo.toml @@ -0,0 +1,26 @@ + +[package] +name = "cbor-fuzz" +version = "0.0.0" +authors = ["Automatically generated"] +publish = false +edition = "2018" + +[package.metadata] +cargo-fuzz = true + +[dependencies] +libfuzzer-sys = "0.3" + +[dependencies.cbor] +path = ".." + +# Prevent this from interfering with workspaces +[workspace] +members = ["."] + +[[bin]] +name = "fuzz_target_cbor" +path = "fuzz_targets/fuzz_target_cbor.rs" +test = false +doc = false diff --git a/libraries/cbor/fuzz/fuzz_targets/fuzz_target_cbor.rs b/libraries/cbor/fuzz/fuzz_targets/fuzz_target_cbor.rs new file mode 100644 index 0000000..fe7a5a2 --- /dev/null +++ b/libraries/cbor/fuzz/fuzz_targets/fuzz_target_cbor.rs @@ -0,0 +1,15 @@ +#![no_main] +#[macro_use] +extern crate libfuzzer_sys; +extern crate alloc; +extern crate cbor; + +use alloc::vec::Vec; + +fuzz_target!(|data: &[u8]| { + if let Ok(value) = cbor::read(data) { + let mut result = Vec::new(); + assert!(cbor::write(value, &mut result)); + assert_eq!(result, data); + }; +}); diff --git a/reproducible/reference_binaries_macos-10.15.sha256sum b/reproducible/reference_binaries_macos-10.15.sha256sum index cd7cf02..96d6702 100644 --- a/reproducible/reference_binaries_macos-10.15.sha256sum +++ b/reproducible/reference_binaries_macos-10.15.sha256sum @@ -1,9 +1,9 @@ 91a98f475cb3042dd5184598a8292edb2a414df8d967a35c8f2295826b5a161b third_party/tock/target/thumbv7em-none-eabi/release/nrf52840dk.bin -120028d4e4266aff8123db544d99d5d67594c1e7bebdfe3e4172bd20716fb34b target/nrf52840dk_merged.hex +33164f39a0b5354cdf61236c301242476284c6b96d55275aa603734054ca7928 target/nrf52840dk_merged.hex a5943c5311158b0f99370246d37782eb9b12fc36c56387eadb6587a3a4fe8fd5 third_party/tock/target/thumbv7em-none-eabi/release/nrf52840_dongle.bin -0aae44b66ed6c8a134809446e95efb3d276182823db20755d0b45baa7cfd6efd target/nrf52840_dongle_merged.hex +1232b44947f302900291692690f2e94cdfb165e00e74c682433100882754a516 target/nrf52840_dongle_merged.hex 663297e3e29b9e2a972b68cea1592aaf965d797242579bb5bca09cd73cdfb637 third_party/tock/target/thumbv7em-none-eabi/release/nrf52840_dongle_dfu.bin -fadd8a863c8828ceb18a8e3224fedc32261befb5af3b04dfd7cc3d9bccc6cc64 target/nrf52840_dongle_dfu_merged.hex +b95ce848465523e98cf0c30f94f6430e99dc8ac4b33da5bc0d0f643523ff4b50 target/nrf52840_dongle_dfu_merged.hex 162a05d056aafc16d4868d5c3aa10518e41299dddd60608f96954dc9cf964cd3 third_party/tock/target/thumbv7em-none-eabi/release/nrf52840_mdk_dfu.bin -2495d4aa2f86da9308b1024490513272294e3cb2652d366a56de13dcd92bc1d1 target/nrf52840_mdk_dfu_merged.hex -e0ed5715b4df3850d6899e158fef24052cc056f641083950094afbf0aa8c5cd5 target/tab/ctap2.tab +1085e1789c4429430c47d28b23a975223717eddd7c8aa23114acbc3ec2ec7080 target/nrf52840_mdk_dfu_merged.hex +5bd063ce44e9ddcad8c4d17165a247387e4f1a9c6db81060fbb97244be1929b8 target/tab/ctap2.tab diff --git a/reproducible/reference_binaries_ubuntu-18.04.sha256sum b/reproducible/reference_binaries_ubuntu-18.04.sha256sum index 9330561..750aa64 100644 --- a/reproducible/reference_binaries_ubuntu-18.04.sha256sum +++ b/reproducible/reference_binaries_ubuntu-18.04.sha256sum @@ -1,9 +1,9 @@ 3feb5d29a3d669107b460a00391440be4ebc5e50461f9ef3248714f4f99c070e third_party/tock/target/thumbv7em-none-eabi/release/nrf52840dk.bin -3c4dde09e8e6082a15bbf9d9eedd12de63f70d85c240292aea246f2d83c54f07 target/nrf52840dk_merged.hex +a02f078e165373113adbaf7fa5d272e7e01134061e8212331d54f0b0a8809aaa target/nrf52840dk_merged.hex 8eebe1c1dfe22003466c2570b3735c54c58ae91b8168582ad363ab79c9230a15 third_party/tock/target/thumbv7em-none-eabi/release/nrf52840_dongle.bin -a5e4ce40777ca4de31377bd60dddb92da172afef6ddcbc48c58f43b77809ac26 target/nrf52840_dongle_merged.hex +973bf7d0b6ddb37bb9698cf8f2ef3c2a3dd27cd482b7a4c02e452902394ffa37 target/nrf52840_dongle_merged.hex 779d77071d1e629f92210ac313e230bcaea6d77c710210c1ac4b40f8085cdad7 third_party/tock/target/thumbv7em-none-eabi/release/nrf52840_dongle_dfu.bin -ccacb03f5140bb334843a42d40e9ad3ec56bbf76fdac023bd8d1c9457dc5c228 target/nrf52840_dongle_dfu_merged.hex +d0e7ecc1d2a45ef4c77b39720b95b3e349a0d48d7b9ca99fa591019a9f2cafee target/nrf52840_dongle_dfu_merged.hex f466490d6498f6c06c7c4a717eb437ba2fb06d1985532c23f145d38b9daa8259 third_party/tock/target/thumbv7em-none-eabi/release/nrf52840_mdk_dfu.bin -a165294acddacd95747d064aff4ecf37654bfa107df49151dbbaf25907468ab4 target/nrf52840_mdk_dfu_merged.hex -54074445657b1842d8c005bb94897c6a60d76c6bfc9b6f9cecac930d3485b930 target/tab/ctap2.tab +d3d4a9d3442bb8cf924f553f8df7085e3d6331f1b6d9557115d485e584285d68 target/nrf52840_mdk_dfu_merged.hex +6cda1346503867ef18d3fe7a3d32de6e22585c6134ef3347877894c5469390f5 target/tab/ctap2.tab diff --git a/reproducible/reference_elf2tab_ubuntu-18.04.txt b/reproducible/reference_elf2tab_ubuntu-18.04.txt index 6a155d5..efcb80e 100644 --- a/reproducible/reference_elf2tab_ubuntu-18.04.txt +++ b/reproducible/reference_elf2tab_ubuntu-18.04.txt @@ -5,8 +5,8 @@ Min RAM size from sections in ELF: 20 bytes Number of writeable flash regions: 0 Adding .crt0_header section. Offset: 64 (0x40). Length: 64 (0x40) bytes. Entry point is in .text section - Adding .text section. Offset: 128 (0x80). Length: 187752 (0x2dd68) bytes. - Adding .stack section. Offset: 187880 (0x2dde8). Length: 16384 (0x4000) bytes. + Adding .text section. Offset: 128 (0x80). Length: 187736 (0x2dd58) bytes. + Adding .stack section. Offset: 187864 (0x2ddd8). Length: 16384 (0x4000) bytes. Searching for .rel.X sections to add. TBF Header: version: 2 0x2 @@ -24,8 +24,8 @@ Min RAM size from sections in ELF: 20 bytes Number of writeable flash regions: 0 Adding .crt0_header section. Offset: 64 (0x40). Length: 64 (0x40) bytes. Entry point is in .text section - Adding .text section. Offset: 128 (0x80). Length: 187752 (0x2dd68) bytes. - Adding .stack section. Offset: 187880 (0x2dde8). Length: 16384 (0x4000) bytes. + Adding .text section. Offset: 128 (0x80). Length: 187736 (0x2dd58) bytes. + Adding .stack section. Offset: 187864 (0x2ddd8). Length: 16384 (0x4000) bytes. Searching for .rel.X sections to add. TBF Header: version: 2 0x2 @@ -43,8 +43,8 @@ Min RAM size from sections in ELF: 20 bytes Number of writeable flash regions: 0 Adding .crt0_header section. Offset: 64 (0x40). Length: 64 (0x40) bytes. Entry point is in .text section - Adding .text section. Offset: 128 (0x80). Length: 187752 (0x2dd68) bytes. - Adding .stack section. Offset: 187880 (0x2dde8). Length: 16384 (0x4000) bytes. + Adding .text section. Offset: 128 (0x80). Length: 187736 (0x2dd58) bytes. + Adding .stack section. Offset: 187864 (0x2ddd8). Length: 16384 (0x4000) bytes. Searching for .rel.X sections to add. TBF Header: version: 2 0x2 @@ -62,8 +62,8 @@ Min RAM size from sections in ELF: 20 bytes Number of writeable flash regions: 0 Adding .crt0_header section. Offset: 64 (0x40). Length: 64 (0x40) bytes. Entry point is in .text section - Adding .text section. Offset: 128 (0x80). Length: 187752 (0x2dd68) bytes. - Adding .stack section. Offset: 187880 (0x2dde8). Length: 16384 (0x4000) bytes. + Adding .text section. Offset: 128 (0x80). Length: 187736 (0x2dd58) bytes. + Adding .stack section. Offset: 187864 (0x2ddd8). Length: 16384 (0x4000) bytes. Searching for .rel.X sections to add. TBF Header: version: 2 0x2