Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
common/bolt11: validate public keys in routing hints
Changelog-Fixed: Validated public keys in BOLT11 routing hints to
prevent processing of malformed public keys.
  • Loading branch information
erickcestari committed May 13, 2025
commit e93fe722a2339ca4c085daafcd059747fd174c02
3 changes: 3 additions & 0 deletions common/bolt11.c
Original file line number Diff line number Diff line change
Expand Up @@ -501,6 +501,9 @@ static const char *decode_r(struct bolt11 *b11,
if (!fromwire_route_info(&r8, &rlen, &ri)) {
return tal_fmt(b11, "r: hop %zu truncated", n);
}
if (!node_id_valid(&ri.pubkey)) {
return tal_fmt(b11, "r: hop %zu pubkey invalid", n);
}
tal_arr_expand(&r, ri);
} while (rlen);

Expand Down
5 changes: 5 additions & 0 deletions common/test/run-bolt11.c
Original file line number Diff line number Diff line change
Expand Up @@ -731,6 +731,11 @@ int main(int argc, char *argv[])
assert(!bolt11_decode(tmpctx, "lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdqcgfskggz423rz6wp6yrc2pgpqcqpjmyveg8ccprmlssyae9l33an2m0qz3qcfcavt7wdzrdqyx5q7hqmp7ne08uvwlwaaqwt4lxgmjh5gce3hv0m8tzwkzfshpdv9d5p9pcsp5v86r0", NULL, NULL, NULL, &fail));
assert(streq(fail, "d: invalid utf8"));

/* Invalid private routes. */
/* Invalid route pubkey. */
assert(!bolt11_decode(tmpctx, "lnbc1qqygh9qpp50qzxqqqqqpqqrzjcqqqqqqqqqqqqqqqqqqqqqqqqqqcqpjqqqqqqrzjcqqqqqcqpjqqqqqqqqqqqqqqqqqqqqqqqqqcq9qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqdqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlqqqqqqqqqqqqqqqqqqqqqqq4murj7", NULL, NULL, NULL, &fail));
assert(streq(fail, "r: hop 0 pubkey invalid"));

/* FIXME: Test the others! */
common_shutdown();
}
Loading