ITADN

`bolt11` parsing issue

#87Closeddanieldaquino 创建于 2025-08-13
D
danieldaquinocommented
NostrDB fails to decode certain bolt11 invoices. ## Proof of concept repro **Base commit:** 46acf676718791a2f6ce6f17fdd0b2af2046ca2e **Patch:** ```diff diff --git a/test.c b/test.c index 507d787..b06da42 100644 --- a/test.c +++ b/test.c @@ -198,9 +198,11 @@ static void test_encode_decode_invoice() { const char *deschash = "lnbc12n1pjctuljsp57l6za0xry37prkrz7vuv4324ljnssm8ukr2vrf6qvvrgclsmpyhspp5xqfuk89duzjlt2yg56ym7p3enrfxxltyfpc364qc8nsu3kznkl8shp5eugmd894yph7wq68u09gke5x2hmn7mg3zrwd06fs57gmcrjm0uxsxqyjw5qcqpjrzjqd7yw3w4kvhx8uvcj7qusfw4uqre3j56zjz9t07nd2u55yuya3awsrqdlcqqdzcqqqqqqqqqqqqqqzqqyg9qxpqysgqwm2tsc448ellvf5xem2c95hfvc07lakph9r8hffh704uxqhs22r9s4ly0jel48zv6f7fy8zjkgmjt5h2l4jc9gyj4av42s40qvve2ysqwuega8"; const char *desc = "lnbc12u1pjctuklsp5lg8wdhq2g5xfphkqd5k6gf0femt06wfevu94uuqfprc4ggyqma7spp54lmpmz0mhv3lczepdckr0acf3gdany2654u4k2s8fp5xh0yanjhsdq5w3jhxapdd9h8vmmfvdjsxqyjw5qcqpjrzjqgtsq68q0s9wdadpg32gcfu7hslgkhdpaysj2ha3dtnm8882wa6jyzahpqqqpsgqqyqqqqlgqqqqqpsq9q9qxpqysgqdqzhl8gz46nmalhg27stl25z2u7mqtclv3zz223mjwut90m24fa46xqprjewsqys78j2uljfznz5vtefctu6fw7375ee66e62tj965gpcs85tc"; + const char *problematic = "lnbc1230n1p5fetpfpp5mqn7v09jz8pkxl67h4hgd8z2xuqfzfhlw0d4yu5dz4z35ermszaqdq57z0cadhsn78tduylnztscqzzsxqyz5vqrzjqvueefmrckfdwyyu39m0lf24sqzcr9vcrmxrvgfn6empxz7phrjxvrttncqq0lcqqyqqqqlgqqqqqqgq2qsp5mhdv3kgh8y57hd0nezqk0yqhdtkjecnykfxer2k4geg7x34xvqyq9qxpqysgqylpwwyjlvfhc4jzw5hl77a5ajdf7ay6hku7vpznc9efe8nw0h2jp58p7hl2km3hsf3k40z6tey4ye26zf3wwt77ws02rdzzl3cem97squshha0"; test_invoice_encoding(deschash); test_invoice_encoding(desc); + test_invoice_encoding(problematic); } // Test the created_at query plan via a contact-list query ``` **Steps:** 1. Run `make check` **Expected results:** Test should pass **Actual results:** Test fails: ``` $ make check cc -Wall -Wno-misleading-indentation -Wno-unused-function -Werror -O2 -g -Isrc -Ideps/secp256k1/include -Ideps/lmdb -Ideps/flatcc/include -Isrc/bolt11/ -Iccan/ -DCCAN_TAL_NEVER_RETURN_NULL=1 test.c src/nostrdb.o src/invoice.o src/nostr_bech32.o src/content_parser.o src/block.o src/bolt11/bolt11.o src/bolt11/bech32.o src/bolt11/amount.o src/bolt11/hash_u5.o deps/flatcc/src/runtime/json_parser.o deps/flatcc/src/runtime/verifier.o deps/flatcc/src/runtime/builder.o deps/flatcc/src/runtime/emitter.o deps/flatcc/src/runtime/refmap.o ccan/ccan/utf8/utf8.o ccan/ccan/tal/tal.o ccan/ccan/tal/str/str.o ccan/ccan/list/list.o ccan/ccan/mem/mem.o ccan/ccan/crypto/sha256/sha256.o ccan/ccan/take/take.o deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a -o test rm -rf testdata/db/*.mdb ./test search json: '{"search":"abc","limit":1}' 1 note_kind 1 1704401597 2 note_kind 1 1704404822 3 note_kind 2 1704408561 4 note_kind 2 1704408730 count 2 test: test.c:178: test_invoice_encoding: Assertion `fail == NULL' failed. make: *** [Makefile:53: check] Aborted ```
关闭于 2025-08-13 3 条评论