Skip to content

Commit 9b662a8

Browse files
erickcestarirustyrussell
authored andcommitted
common/bolt11: validate public keys in routing hints
Changelog-Fixed: Validated public keys in BOLT11 routing hints to prevent processing of malformed public keys.
1 parent 10708e3 commit 9b662a8

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

common/bolt11.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,9 @@ static const char *decode_r(struct bolt11 *b11,
501501
if (!fromwire_route_info(&r8, &rlen, &ri)) {
502502
return tal_fmt(b11, "r: hop %zu truncated", n);
503503
}
504+
if (!node_id_valid(&ri.pubkey)) {
505+
return tal_fmt(b11, "r: hop %zu pubkey invalid", n);
506+
}
504507
tal_arr_expand(&r, ri);
505508
} while (rlen);
506509

common/test/run-bolt11.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -731,6 +731,11 @@ int main(int argc, char *argv[])
731731
assert(!bolt11_decode(tmpctx, "lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdqcgfskggz423rz6wp6yrc2pgpqcqpjmyveg8ccprmlssyae9l33an2m0qz3qcfcavt7wdzrdqyx5q7hqmp7ne08uvwlwaaqwt4lxgmjh5gce3hv0m8tzwkzfshpdv9d5p9pcsp5v86r0", NULL, NULL, NULL, &fail));
732732
assert(streq(fail, "d: invalid utf8"));
733733

734+
/* Invalid private routes. */
735+
/* Invalid route pubkey. */
736+
assert(!bolt11_decode(tmpctx, "lnbc1qqygh9qpp50qzxqqqqqpqqrzjcqqqqqqqqqqqqqqqqqqqqqqqqqqcqpjqqqqqqrzjcqqqqqcqpjqqqqqqqqqqqqqqqqqqqqqqqqqcq9qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqdqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlqqqqqqqqqqqqqqqqqqqqqqq4murj7", NULL, NULL, NULL, &fail));
737+
assert(streq(fail, "r: hop 0 pubkey invalid"));
738+
734739
/* FIXME: Test the others! */
735740
common_shutdown();
736741
}

0 commit comments

Comments
 (0)