feat(fuzz): add SharpFuzz-based fuzzing for untrusted-input parsers
New tests/PalladiumWallet.Fuzz project: one target per parser that consumes untrusted input (block headers, Merkle proofs, peer lists, wallet files, user-pasted mnemonics/keys/addresses/amounts), each encoding the parser's documented error contract - any exception beyond that contract is a finding, reported as a crash. Three ways to run: the seed corpus (with regression inputs for every crash found so far, including the two fixed in prior commits) replays automatically inside dotnet test via FuzzCorpusTests, so a fixed contract violation can't silently return; a built-in random-mutation mode needs no external tooling (dotnet run -- <target> --random N); and fuzz.sh drives real coverage-guided campaigns via afl++ + SharpFuzz instrumentation for pre-release or post-parser-change runs.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
plm1qdq3gu2zvg9lyr8gxd6yln4wavc5tlp8prmvfay
|
||||
@@ -0,0 +1 @@
|
||||
hello world
|
||||
@@ -0,0 +1 @@
|
||||
PB6q3PB6q3PB6q3PB6q3PB6q3PB6q3PB6q
|
||||
@@ -0,0 +1 @@
|
||||
abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
|
||||
@@ -0,0 +1 @@
|
||||
ábÊco ábaco0ábacoábÊ
|
||||
@@ -0,0 +1 @@
|
||||
ábaco ábaco ábaco
|
||||
@@ -0,0 +1 @@
|
||||
0,001
|
||||
@@ -0,0 +1 @@
|
||||
79228162514264337593543950335
|
||||
@@ -0,0 +1 @@
|
||||
1.50000000
|
||||
@@ -0,0 +1 @@
|
||||
{"Format":"plm-wallet-aesgcm-v1","Iterations":2,"Salt":"AAAAAAAAAAAAAAAAAAAAAA==","Nonce":"AAAAAAAAAAAAAAAA","Tag":"AAAAAAAAAAAAAAAAAAAAAA==","Data":"AAAA"}
|
||||
@@ -0,0 +1 @@
|
||||
hello
|
||||
@@ -0,0 +1 @@
|
||||
{"Format":"other","Iterations":2,"Salt":"","Nonce":"","Tag":"","Data":""}
|
||||
@@ -0,0 +1 @@
|
||||
0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
[[1,2,3],{"a":1},"x",[["h","n",[42,"t"]]]]
|
||||
@@ -0,0 +1 @@
|
||||
[["1.2.3.4","peer.example",["v1.4.2","p10","t50001","‡50002"]]]
|
||||
@@ -0,0 +1 @@
|
||||
[["1.2.3.4","peer.example",["v1.4.2","p10","t50001","s50002"]]]
|
||||
@@ -0,0 +1 @@
|
||||
not-a-key
|
||||
@@ -0,0 +1 @@
|
||||
xpub661MyMwAqRbcF
|
||||
@@ -0,0 +1 @@
|
||||
zpub6rFR7y4Q2AijBEqTUquhVz398htDFrtymD9xYYfG1m4wAcvPhXNfE3EfH1r1ADqtfSdVCToUG868RvUUkgDKf31mGDtKsAYz2oz2AGutZYs
|
||||
@@ -0,0 +1 @@
|
||||
{"Version":99}
|
||||
@@ -0,0 +1 @@
|
||||
{"Version":1,"Network":"mainnet","ScriptKind":"NativeSegwit"}
|
||||
@@ -0,0 +1 @@
|
||||
hello
|
||||
Reference in New Issue
Block a user