diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/01d91e3edd6c7f285efc423908d7a533a30f2427 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/01d91e3edd6c7f285efc423908d7a533a30f2427 new file mode 100644 index 000000000000..ac01bab26447 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/01d91e3edd6c7f285efc423908d7a533a30f2427 @@ -0,0 +1 @@ +lno1pgqzzgrvgphnzutnw9chzut3w9chrem3w9chrruw3ekkuemhn7ff0xy2llllllllllll8llllakhgwtnwajxsdt3vachwctwdq6nvur2wa5xk6ejxeersam9dd4h8lllpyq0llllqqq8zut3 \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/1d7a94ea55a71a1eba6382ac698c0e0ae0471110 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/1d7a94ea55a71a1eba6382ac698c0e0ae0471110 new file mode 100644 index 000000000000..c4df253fad46 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/1d7a94ea55a71a1eba6382ac698c0e0ae0471110 @@ -0,0 +1 @@ +lno1zprqzqqqqfenwm35qgpqysszqgpqvqszqgpqyqszqgpqyqszqgqqyqszqgpqyqszdq3nswfnpgzxjuehwamhgqnrpnqgpp0dlafgq5jj2ff99jwfe56xs \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/24d161ff99af0e05b1f93859dbfc07d3529bafbd b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/24d161ff99af0e05b1f93859dbfc07d3529bafbd new file mode 100644 index 000000000000..691876103cce --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/24d161ff99af0e05b1f93859dbfc07d3529bafbd @@ -0,0 +1 @@ +lno1zppsyk6tqqqqq6r8weksyqhlllllllllqgpqyqszqt79uqszqgpqyqszqgpqyqszqgp2tfgz5kj6tfd95kjnywt8x3artfd95kj6tf095kjsqqq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/26a240b30e6b30fae285248046cfbf142b49c680 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/26a240b30e6b30fae285248046cfbf142b49c680 new file mode 100644 index 000000000000..57673184a95e --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/26a240b30e6b30fae285248046cfbf142b49c680 @@ -0,0 +1 @@ +lno1pqqhz9zmtgcxvdngvamx6qszqgpqyqszqgpqyqszqgfqyqszqgpqyqszqgpqyqszqgpqyq3nxuuxxmrjw5crxdmcqyqszqgpqyqssqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszpc \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2a8c32e19535190fe669ceb1b60891f64ce10f93 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2a8c32e19535190fe669ceb1b60891f64ce10f93 new file mode 100644 index 000000000000..79facaf6f4f3 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2a8c32e19535190fe669ceb1b60891f64ce10f93 @@ -0,0 +1 @@ +lno1qgqqsqq2qq8qqyrqqfd45vrxxcqqqqrrqgpqyqszqgpqyqhuqqqqqqqqqqqqyqszqgpqyqszlmlqqqgzqgpxsdmwx3mnwwpkd9ea4lqqqqqqqqqqqrdd4kk6mtdd4kk6mtyujvxfe8yunjwfxufqqxsuq5qqqqq7qqsqyqnsw5 \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2bf672191f67a7d46688ea29ab0b99a21f223eb6 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2bf672191f67a7d46688ea29ab0b99a21f223eb6 new file mode 100644 index 000000000000..6c842abc4333 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2bf672191f67a7d46688ea29ab0b99a21f223eb6 @@ -0,0 +1 @@ +lno1pqq0aljpq38sq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2d709fdda33e4d4d1534904b9743687a119184f2 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2d709fdda33e4d4d1534904b9743687a119184f2 new file mode 100644 index 000000000000..d19e582f1a3f --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2d709fdda33e4d4d1534904b9743687a119184f2 @@ -0,0 +1 @@ +lno1zz9s9lll8lllllllluvqqqqqllllllgfllllllllllll7qqqqqqqqqqqqtllllllllllllllllllll6pqqpqqqqqqqqqqqqq95qqqqqqdehnqqqqqqqqqqqqqqq05qsqqqqqqqqqqqqqqqqqqqqqjqqqqqqr6qqqqqq8jqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqqqqqqqqqqpaqpkkcvrnw9ukkmrvd3kq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2d8c54d289cf82dc42c33db958fdc0bc02cce8eb b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2d8c54d289cf82dc42c33db958fdc0bc02cce8eb new file mode 100644 index 000000000000..85db4f39eec0 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/2d8c54d289cf82dc42c33db958fdc0bc02cce8eb @@ -0,0 +1 @@ +lno1zr8s9lll8lllllllluvqqqqqllllllcfllllllllllll7qqqqqqqqqqqqtllllllllllllllllllll6pqq4syqqqqqqqqqqqqyqqqqqqqqqqzqqqqqqqqqqqqqq05q4u878sqsz3qqqqqqqqqqyqz7swq943gq0eyqp0jqqq85qqqqqq0yqqqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqq85qqqqgqqqqqqqqqqyqqq7gqqqqqqqqqqqqqqqqzqqqqqqqqqqqxsvnvd5nsqqqqqqqqq7gqqqqqqqqqqqqqqqqzqqqqqqrjw5crxmrwduch5urnw9ukkmrvd3kq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/36e646f95fa99faa1773d327a53152c40470e5e8 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/36e646f95fa99faa1773d327a53152c40470e5e8 new file mode 100644 index 000000000000..5a91a796efa1 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/36e646f95fa99faa1773d327a53152c40470e5e8 @@ -0,0 +1 @@ +lno1lll7llllllll6ecy9v4jk2et9v4jk2et9v4jk2etqs4jk2etgy4jk2lll0ll72et9v4jk2et9v4jksft9v4ll7llllllllll9v4jk2et9v4llllllaq5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5zs2pg9qllllllllllllllllllllll7tl7ecylllkcmn0wyu85ut3wyqqqqqqllllllllllllllllllll7u0lllllllcqqqqqpllllllsqqqq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/3fd050d69f84e6aafd81871fecffaa03a90e3ed0 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/3fd050d69f84e6aafd81871fecffaa03a90e3ed0 new file mode 100644 index 000000000000..0ede73b1879f --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/3fd050d69f84e6aafd81871fecffaa03a90e3ed0 @@ -0,0 +1 @@ +lno1zq7sz6qz8qunx6mnxu9rffdv5kjaeff85kj6tf0llllnwm35wu38xetgwlyuj6gy7c98xdnwxg9qz7swqy68wum9y5qzhjwfe56xs \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/5fd6dffd2c0d6741ebd333dae388e2863b0da285 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/5fd6dffd2c0d6741ebd333dae388e2863b0da285 new file mode 100644 index 000000000000..02cac3736ea2 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/5fd6dffd2c0d6741ebd333dae388e2863b0da285 @@ -0,0 +1 @@ +lno1pqq0usgqae8splh7lczy7qq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/65fb94eeeb2b05b2ec338643fbb9863542329ebe b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/65fb94eeeb2b05b2ec338643fbb9863542329ebe new file mode 100644 index 000000000000..447c40b248d4 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/65fb94eeeb2b05b2ec338643fbb9863542329ebe @@ -0,0 +1 @@ +lno1zpzq9lll8lllllllllllllll5mll7psqllllllllllll7qqqqqqqqqqqqg9llllllugygqhllullllllllllllllqgpqyqszqgpqyqszqgp0lfhl4z52329frg \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/6b6b13655e8cccb4b684ba9bae2f764f3118b528 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/6b6b13655e8cccb4b684ba9bae2f764f3118b528 new file mode 100644 index 000000000000..40dc8834677d --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/6b6b13655e8cccb4b684ba9bae2f764f3118b528 @@ -0,0 +1 @@ +lno1qgqqsqq2qq8qqysqrgqsq8q9qqqqq8sqyqpqyur4 \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/77499dedf938f63535bbb20a286e3ad361f8b731 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/77499dedf938f63535bbb20a286e3ad361f8b731 new file mode 100644 index 000000000000..813c10b83885 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/77499dedf938f63535bbb20a286e3ad361f8b731 @@ -0,0 +1 @@ +lno1zppsyk6tqqqqq6r8weksyq30qgpqyqszqgpqyqszqgpqyqszqgp2tfgzqgpqyqk8clrs9fd95kj6tfd95kjsqqhllllllfd9tdd942a290j6hts \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/79857aeb0b87437ca595861792659193312561ee b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/79857aeb0b87437ca595861792659193312561ee new file mode 100644 index 000000000000..668daf731e86 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/79857aeb0b87437ca595861792659193312561ee @@ -0,0 +1 @@ +lno1zr8s9lll8lllllllluvqqqqqllllllcfllllllllllll7qqqqqqqqqqqqtllllllllllllllllllll6pqq4syqqqqqqqqqqqqyqqqqqqqqqqzqqqqqqqqqqqqqq05q4u878sqsz3qqqqqqqqqqyqz7swq943gq0eyqp0jqqq85qqqqqq0yqqqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqq85qqqqqq0yqqqqqqqqqqqqqqqqpqqqqqqqqqqqrgxfkx6fcqqqqqqqqqzs7sqqqqqpusqqqqqqqqqqqqqqqqyqqqqqq8yafsxdkxume30fc8xuteddkxcmrv \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/8069339ed3602be15b9a53048a81dbaa00203314 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/8069339ed3602be15b9a53048a81dbaa00203314 new file mode 100644 index 000000000000..73b43624b84e --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/8069339ed3602be15b9a53048a81dbaa00203314 @@ -0,0 +1 @@ +lno1lekxuqn0pgp9k2e3wqp9kwttxg \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/8d639bb8f206c67c4a24981686b5a41e994819e7 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/8d639bb8f206c67c4a24981686b5a41e994819e7 new file mode 100644 index 000000000000..8ae6597a9eb5 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/8d639bb8f206c67c4a24981686b5a41e994819e7 @@ -0,0 +1 @@ +lno1zgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqngxs6rv6e5wv4nwumhv458wam5wfj8qctc0qm0ajv2xspqyqszqf5rgdpkdv68x2ehwdmk26rhwa68yersv9u8sdh7qq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/999e1b5ce5fbc48a3f108f70d176bee0d848af0f b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/999e1b5ce5fbc48a3f108f70d176bee0d848af0f new file mode 100644 index 000000000000..08421b632330 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/999e1b5ce5fbc48a3f108f70d176bee0d848af0f @@ -0,0 +1 @@ +lno1lekrz26mqfh9k \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/9db6f6cac7f0f54ce9a662566cbd8bbeb12e9b0d b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/9db6f6cac7f0f54ce9a662566cbd8bbeb12e9b0d new file mode 100644 index 000000000000..2db6d1258f32 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/9db6f6cac7f0f54ce9a662566cbd8bbeb12e9b0d @@ -0,0 +1 @@ +lno1zppsrlcztddrqe3kdqpqqqqqqgpq9llllllllllllachrlcdp5xs6rgdqgpqzqqqqqqqqqqqqyqqsqqqdceqqqqzqqrxcmsvduchrl79qqqrzrg \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/a397e1a087f33d681522e7bab4dfd5ebd0be03fb b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/a397e1a087f33d681522e7bab4dfd5ebd0be03fb new file mode 100644 index 000000000000..868aaf5f825f --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/a397e1a087f33d681522e7bab4dfd5ebd0be03fb @@ -0,0 +1 @@ +lno1qcqqsqqjqqsqdl07prllllllllllllllllllllllllllllllllllllllllllmlllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll7q86llllllllllllllllt4kxume3pgqsq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/a57fa35f4a002e2e6a9562f1f0146c38f36e0467 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/a57fa35f4a002e2e6a9562f1f0146c38f36e0467 new file mode 100644 index 000000000000..d1b12389a14a --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/a57fa35f4a002e2e6a9562f1f0146c38f36e0467 @@ -0,0 +1 @@ +lno1qcqpqscztd9sqqqqdpnhvmgzqgpq9lgzqgpqyqj7qgpq9lt8qgpqyqszqgpqyqszqgpqyqsz5kj6tfd95kj6tfd95kj6tfd95kj62k66tgd95kj6lvyqqrsql87nj \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/bc12732ce6cc1c9f29516cbe0762e0555c6d68f1 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/bc12732ce6cc1c9f29516cbe0762e0555c6d68f1 new file mode 100644 index 000000000000..4b6b6cf792fe --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/bc12732ce6cc1c9f29516cbe0762e0555c6d68f1 @@ -0,0 +1 @@ +lno1zzcq9lll8lllllllluvqqqqqllllllcfllllllllllll7qqqqqqqqqqqqtllllllllllllllllllllmgduexqqqqqqqqqsgqqgqqqqqqqqqqqqqqqqqqqqqqqqq05qsqqqqqqqqqqqqqqqqqqqqqqqqqqqqr6qqqqqq8jqqqqqqqqqqqqqqqqqsqqqqqqqqzqgpqyqszqgpqr7szqgpqy6ryqgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqyqkyxvurxqm3v4uqqqqqqqq8jutn0fchzut3d4ehz6mvd3k0jmq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/bda6920fa34bcaa19cf0ea6bf868b5dcc2f74c96 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/bda6920fa34bcaa19cf0ea6bf868b5dcc2f74c96 new file mode 100644 index 000000000000..25aec922a4a6 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/bda6920fa34bcaa19cf0ea6bf868b5dcc2f74c96 @@ -0,0 +1 @@ +lno1zppsrlcztddrqe3kdqpqqqqqqgpqyqszqgpqyqhlllllllcdp5xs6rgdqgpqypcqqqqqqqqqqphryqqqqgqq9lc2pq9q5zq2pg9p5zs2rg9p5zs \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/c287dfd986bc688793fd92b0b7ffe7fa5c2dcb44 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/c287dfd986bc688793fd92b0b7ffe7fa5c2dcb44 new file mode 100644 index 000000000000..b71f0aedae47 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/c287dfd986bc688793fd92b0b7ffe7fa5c2dcb44 @@ -0,0 +1 @@ +lno1qcqqsqqjqqsxkvgqsyq0lllll7424252lllsqqqp4gqqp24242qrg \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/cb240962e6bb84906630b817441fddae387bf4b1 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/cb240962e6bb84906630b817441fddae387bf4b1 new file mode 100644 index 000000000000..a7c9b129d7f3 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/cb240962e6bb84906630b817441fddae387bf4b1 @@ -0,0 +1 @@ +lno1zqssyc3svcmzg6r8wmllllllllllllcflllllllllllsqqqqqqqqqqqqqrllllllllllllcqqqqqqqqqqqp0lllllas0llllllllllllgyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaqqqqqqqqqqqqqqqqqqqqqqqzqqqqplcqqqpqqqqqqqqqqqqqqqqqqqqqqrll7z0llllllllllllsqqqqqqqqqqqzllllllmqllllllllllll7sgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqqqqqqqqqqqqqqqr6qqqqqqqqqqqqqqqqqqqgqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqq84jxcmtvxpskc6phqq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/d33737737fbdda909585ed37de7f21d33e53678b b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/d33737737fbdda909585ed37de7f21d33e53678b new file mode 100644 index 000000000000..99448f8295d0 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/d33737737fbdda909585ed37de7f21d33e53678b @@ -0,0 +1 @@ +lno1pqq0usgqae8splnwdll57qq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/de5fb6677fdaca5de578728d4f6276460b46fb72 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/de5fb6677fdaca5de578728d4f6276460b46fb72 new file mode 100644 index 000000000000..a9d22c0ca1ae --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/de5fb6677fdaca5de578728d4f6276460b46fb72 @@ -0,0 +1 @@ +lno1pfkxu6pew46rx7n4wnzc335ud3hx76r6dp6hgvmgdf6hf3vgc6wvtzxxn3kxummrdquh2apndpa82ax93rrfcmrwda585at5xdmnjmng0f6hf3vgc6wxcmn0dparjat5xd5zv7n4wnzc335uckyrx6r6w46vtzxxnnzc33nrdp585at5 \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/e2a3afca0acc1b0abf6a59d04efb1e75310698ff b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/e2a3afca0acc1b0abf6a59d04efb1e75310698ff new file mode 100644 index 000000000000..8ccc5064bacb --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/e2a3afca0acc1b0abf6a59d04efb1e75310698ff @@ -0,0 +1 @@ +lno1qyqqvqqgqq8qqysqy5qzkqp3qq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/e6b8407aff38bd94ce9fe8036c76b1e0f5a9e289 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/e6b8407aff38bd94ce9fe8036c76b1e0f5a9e289 new file mode 100644 index 000000000000..69fd948a1d15 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/e6b8407aff38bd94ce9fe8036c76b1e0f5a9e289 @@ -0,0 +1 @@ +lno1zpzsyk66xpnrv6r8weksyqszqfjqqqszqgpqyqszzgpqyqszqgpqyqszqgpqyqszqgpqyveh8p3kcun4xqenwwem8vankw6329g4r2z329g4z5232y \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/f5eedc02002279fc5278fd3b98d74f0878db523f b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/f5eedc02002279fc5278fd3b98d74f0878db523f new file mode 100644 index 000000000000..a5fadcf416c4 --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/f5eedc02002279fc5278fd3b98d74f0878db523f @@ -0,0 +1 @@ +lno1lc7h5qpaqq \ No newline at end of file diff --git a/tests/fuzz/corpora/fuzz-bolt12-offer-decode/f75bb6f78bd99a440a4cd6daf162936c6af13536 b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/f75bb6f78bd99a440a4cd6daf162936c6af13536 new file mode 100644 index 000000000000..277d82f4ca5f --- /dev/null +++ b/tests/fuzz/corpora/fuzz-bolt12-offer-decode/f75bb6f78bd99a440a4cd6daf162936c6af13536 @@ -0,0 +1 @@ +lno1pq9qfudt42whplenwdcs \ No newline at end of file diff --git a/tests/fuzz/fuzz-bolt12-offer-decode.c b/tests/fuzz/fuzz-bolt12-offer-decode.c index d062b95a63fb..4ab229c6fc56 100644 --- a/tests/fuzz/fuzz-bolt12-offer-decode.c +++ b/tests/fuzz/fuzz-bolt12-offer-decode.c @@ -1,4 +1,6 @@ #include "config.h" +#include +#include #include #include #include @@ -7,12 +9,163 @@ const char *bech32_hrp = "lno"; +static bool sciddir_or_pubkey_eq(const struct sciddir_or_pubkey *a, + const struct sciddir_or_pubkey *b) +{ + if (a->is_pubkey != b->is_pubkey) + return false; + if (a->is_pubkey) + return pubkey_eq(&a->pubkey, &b->pubkey); + else + return short_channel_id_dir_eq(&a->scidd, &b->scidd); +} + +static bool recurrence_eq(const struct recurrence *a, const struct recurrence *b) +{ + return a->time_unit == b->time_unit && a->period == b->period; +} + +static bool recurrence_paywindow_eq(const struct recurrence_paywindow *a, + const struct recurrence_paywindow *b) +{ + return a->seconds_before == b->seconds_before && a->seconds_after == b->seconds_after; +} + +static bool recurrence_base_eq(const struct recurrence_base *a, + const struct recurrence_base *b) +{ + return a->basetime == b->basetime && a->proportional_amount == b->proportional_amount; +} + +static bool blinded_path_eq(const struct blinded_path *a, + const struct blinded_path *b) +{ + if (!sciddir_or_pubkey_eq(&a->first_node_id, &b->first_node_id)) + return false; + if (!pubkey_eq(&a->first_path_key, &b->first_path_key)) + return false; + if (tal_count(a->path) != tal_count(b->path)) + return false; + for (size_t i = 0; i < tal_count(a->path); i++) { + const struct blinded_path_hop *h1 = a->path[i]; + const struct blinded_path_hop *h2 = b->path[i]; + if (h1 == h2) + continue; + if (!h1 || !h2) + return false; + if (!pubkey_eq(&h1->blinded_node_id, &h2->blinded_node_id)) + return false; + if (tal_bytelen(h1->encrypted_recipient_data) != + tal_bytelen(h2->encrypted_recipient_data)) + return false; + if (memcmp(h1->encrypted_recipient_data, h2->encrypted_recipient_data, + tal_bytelen(h1->encrypted_recipient_data)) != 0) + return false; + } + return true; +} + +static bool tlv_offer_eq(const struct tlv_offer *a, const struct tlv_offer *b) +{ + +#define PTR_EQ(field, eqfn) \ +do { \ + if (a->field != b->field) { \ + if (!a->field || !b->field) \ + return false; \ + if (!eqfn(a->field, b->field)) \ + return false; \ + } \ +} while (0) + +#define MEM_EQ(field) \ +do { \ + if (a->field != b->field) { \ + if (!a->field || !b->field) \ + return false; \ + if (tal_bytelen(a->field) != tal_bytelen(b->field)) \ + return false; \ + if (memcmp(a->field, b->field, tal_bytelen(a->field)) != 0) \ + return false; \ + } \ +} while (0) + +#define VAL_EQ(field) \ +do { \ + if (a->field != b->field) { \ + if (!a->field || !b->field) \ + return false; \ + if (*a->field != *b->field) \ + return false; \ + } \ +} while (0) + +#define ARR_EQ(field, eqfn) \ +do { \ + if (a->field != b->field) { \ + if (!a->field || !b->field) \ + return false; \ + if (tal_count(a->field) != tal_count(b->field)) \ + return false; \ + for (size_t i = 0; i < tal_count(a->field); i++) { \ + if (!eqfn(&a->field[i], &b->field[i])) \ + return false; \ + } \ + } \ +} while (0) + +#define PTR_ARR_EQ(field, eqfn) \ +do { \ + if (a->field != b->field) { \ + if (!a->field || !b->field) \ + return false; \ + if (tal_count(a->field) != tal_count(b->field)) \ + return false; \ + for (size_t i = 0; i < tal_count(a->field); i++) { \ + if (!eqfn(a->field[i], b->field[i])) \ + return false; \ + } \ + } \ +} while (0) + + ARR_EQ(offer_chains, bitcoin_blkid_eq); + MEM_EQ(offer_metadata); + MEM_EQ(offer_currency); + VAL_EQ(offer_amount); + MEM_EQ(offer_description); + MEM_EQ(offer_features); + VAL_EQ(offer_absolute_expiry); + PTR_ARR_EQ(offer_paths, blinded_path_eq); + MEM_EQ(offer_issuer); + VAL_EQ(offer_quantity_max); + PTR_EQ(offer_issuer_id, pubkey_eq); + PTR_EQ(offer_recurrence_compulsory, recurrence_eq); + PTR_EQ(offer_recurrence_optional, recurrence_eq); + PTR_EQ(offer_recurrence_base, recurrence_base_eq); + PTR_EQ(offer_recurrence_paywindow, recurrence_paywindow_eq); + VAL_EQ(offer_recurrence_limit); + + return true; +} + void run(const u8 *data, size_t size) { - char *fail; + struct tlv_offer *offer, *decoded_offer; + char *fail = NULL, *encoded_offer; + + offer = offer_decode(tmpctx, (const char *)data, size, + /*feature_set=*/NULL, /*must_be_chain=*/NULL, &fail); + if (!offer) + goto cleanup; + + encoded_offer = offer_encode(tmpctx, offer); - offer_decode(tmpctx, (const char *)data, size, /*feature_set=*/NULL, - /*must_be_chain=*/NULL, &fail); + decoded_offer = offer_decode(tmpctx, encoded_offer, strlen(encoded_offer), + NULL, NULL, &fail); + assert(!fail); + assert(decoded_offer); + assert(tlv_offer_eq(offer, decoded_offer)); +cleanup: clean_tmpctx(); }