lnd/lnwire
Olaoluwa Osuntokun f5ccc922e2
lnwire: cap decoded short channel IDs
In this commit, we cap each decompressed short channel ID set at 100,000
entries, matching the aggregate range reply budget. The old zlib reader
bounded compressed input rather than decoded output, so the two working-set
limits could drift apart.

We retain compatibility with protocol-valid compressed replies, reject
truncated or corrupt zlib streams, and close the reader on every exit.
Boundary, compatibility, corruption, and property tests cover the
decoder.

(cherry picked from commit d162291941)
2026-08-03 18:01:58 -03:00
..
accept_channel.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
accept_channel_test.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
announcement_signatures.go lnwire: add new SerializedSize method to all wire messages 2025-03-20 18:27:52 -07:00
announcement_signatures_2.go lnwire: update AnnounceSigs2 to use pure TLV 2025-09-01 12:10:30 +02:00
announcement_signatures_2_test.go lnwire: update AnnounceSigs2 to use pure TLV 2025-09-01 12:10:30 +02:00
channel_announcement.go lnwire: validate that gossip messages contain valid TLV 2025-05-22 14:14:41 +02:00
channel_announcement_2.go lnwire: add Outpoint to ChannelAnnouncement2 2025-10-01 13:13:32 +02:00
channel_announcement_2_test.go lnwire: add Outpoint to ChannelAnnouncement2 2025-10-01 13:13:32 +02:00
channel_id.go lnwire: let ChannelID implement RecordProducer 2025-09-01 11:05:23 +02:00
channel_id_test.go multi: make NewChanIDFromOutpoint accept value instead of pointer 2024-03-08 15:47:55 -08:00
channel_ready.go lnwire: add new SerializedSize method to all wire messages 2025-03-20 18:27:52 -07:00
channel_reestablish.go lnwire: add new SerializedSize method to all wire messages 2025-03-20 18:27:52 -07:00
channel_type.go lnwire: create common encoder/decoder for raw feature vectors 2024-03-27 09:36:38 -04:00
channel_type_test.go lnwire: add new ChannelType field as TLV record to Open/AcceptChannel 2021-08-30 19:17:21 -07:00
channel_update.go multi: allow invalid tlv data when decoding payment fail info 2025-11-03 12:54:29 +01:00
channel_update_2.go lnwire: add inbound fee to ChannelUpdate2 2025-10-01 13:13:32 +02:00
channel_update_2_test.go lnwire+netann: update ChannelUpdate2 2025-09-01 12:10:30 +02:00
closing_complete.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
closing_sig.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
closing_signed.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
commit_sig.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
commit_sig_test.go lnwire: add custom records field to type CommitSig 2024-09-18 10:25:42 +02:00
custom.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
custom_records.go refactor: use maps.Copy for cleaner map handling 2025-03-25 01:19:55 +08:00
custom_records_test.go multi: update to fn v2 2024-12-04 13:19:00 -07:00
dns_addr.go lnwire: let DNSAddress implement RecordProducer 2025-10-01 13:49:15 +02:00
dns_addr_test.go lnwire: let DNSAddress implement RecordProducer 2025-10-01 13:49:15 +02:00
dyn_ack.go lnwire: make LocalNonce an optional tlv record and fix extra data 2025-07-11 04:11:30 +03:00
dyn_ack_test.go lnwire: patch uint test for DynAck 2025-07-11 04:11:30 +03:00
dyn_commit.go lnwire: simplify dyn decode methods 2025-07-11 04:11:31 +03:00
dyn_commit_test.go lnwire: patch test and fix extra data in DynCommit 2025-07-11 04:11:31 +03:00
dyn_propose.go lnwire: simplify dyn decode methods 2025-07-11 04:11:31 +03:00
dyn_propose_test.go lnwire: patch unit test for DynPropose 2025-07-11 04:09:11 +03:00
dyn_reject.go lnwire: add new SerializedSize method to all wire messages 2025-03-20 18:27:52 -07:00
encoding.go lnwire: add type CustomRecords 2024-08-22 18:33:24 +02:00
error.go multi: allow invalid tlv data when decoding payment fail info 2025-11-03 12:54:29 +01:00
extra_bytes.go lnwire: add method ParseAndExtractExtraData 2025-07-11 04:11:30 +03:00
extra_bytes_test.go lnwire: add ExtraOpaqueData helper functions and methods 2024-09-05 11:18:15 +02:00
features.go multi: use relaxed feature bit Set method for peer features 2025-06-25 13:14:31 +02:00
features_test.go multi: add restriction on maximum feature bit in invoices 2023-05-04 10:35:45 -04:00
funding_created.go lnwire: add new SerializedSize method to all wire messages 2025-03-20 18:27:52 -07:00
funding_signed.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
fuzz_test.go lnwire: define NodeAnnouncement2 2025-10-02 12:15:16 +02:00
gossip_timestamp_range.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
init_message.go lnwire: add custom records to init 2025-09-23 19:02:59 +02:00
init_message_test.go lnwire: update tests for init message 2025-09-23 19:05:46 +02:00
interfaces.go lnwire: lnwire: add a ChannelUpdate interface 2024-09-18 16:14:58 +02:00
kickoff_sig.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
lnwire.go lnwire: re-usable address descriptor parsers 2025-09-03 08:32:37 +02:00
lnwire_test.go lnwire: use BigSize for encoding btc amount 2025-07-11 04:09:11 +03:00
message.go lnwire: define NodeAnnouncement2 2025-10-02 12:15:16 +02:00
message_test.go multi: rename lnwire.NodeAnnouncement 2025-10-01 13:13:32 +02:00
msat.go go.mod+lnwire: bump TLV dep and fix MilliSatoshi Record 2025-05-07 19:36:25 +02:00
msat_test.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
musig2.go multi: upgrade new taproot TLVs to use tlv.OptionalRecordT 2024-02-29 11:32:26 -06:00
netaddress.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
netaddress_test.go multi: move many t.Fatalf calls to require.NoError 2022-06-17 04:26:55 +00:00
node_announcement.go multi: rename lnwire.NodeAnnouncement 2025-10-01 13:13:32 +02:00
node_announcement_2.go lnwire: define NodeAnnouncement2 2025-10-02 12:15:16 +02:00
node_announcement_2_test.go lnwire: define NodeAnnouncement2 2025-10-02 12:15:16 +02:00
node_announcement_test.go lnwire: add test cases for node alias validation 2019-01-07 12:53:40 -08:00
onion_error.go multi: allow invalid tlv data when decoding payment fail info 2025-11-03 12:54:29 +01:00
onion_error_test.go lnwire: fix test data race 2025-06-20 12:22:59 +02:00
opaque_addrs.go lnwire: add new type OpaqueAddrs 2022-05-04 11:06:11 +02:00
open_channel.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
outpoint.go lnwire: add OutPoint type with TLV encoding support 2025-10-01 13:13:32 +02:00
outpoint_test.go lnwire: add OutPoint type with TLV encoding support 2025-10-01 13:13:32 +02:00
partial_sig.go multi: upgrade new taproot TLVs to use tlv.OptionalRecordT 2024-02-29 11:32:26 -06:00
ping.go lnwire: add new SerializedSize method to all wire messages 2025-03-20 18:27:52 -07:00
pong.go lnwire: add new TestSerializedSize method 2025-03-20 18:28:53 -07:00
pure_tlv.go lnwire: introduce PureTLVMessage 2025-09-01 11:04:47 +02:00
pure_tlv_test.go lnwire: introduce PureTLVMessage 2025-09-01 11:04:47 +02:00
query_channel_range.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
query_channel_range_test.go lnwire: add QueryOptions to QueryChannelRange 2023-12-11 09:12:04 +02:00
query_options.go lnwire: add QueryOptions type 2023-12-11 09:12:03 +02:00
query_short_chan_ids.go lnwire: cap decoded short channel IDs 2026-08-03 18:01:58 -03:00
query_short_chan_ids_test.go lnwire: cap decoded short channel IDs 2026-08-03 18:01:58 -03:00
README.md scripted-diff: replace ⛰ emoji with $ [skip ci] 2022-10-28 12:06:49 -04:00
reply_channel_range.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
reply_channel_range_test.go lnwire: add timestamps to ReplyChannelRange msg 2023-12-11 09:12:04 +02:00
reply_short_chan_ids_end.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
revoke_and_ack.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
serialized_size_test.go lnwire: add new TestSerializedSize method 2025-03-20 18:28:53 -07:00
short_channel_id.go lnwire: add 'x' separator in ShortChannelID method 2025-01-15 15:25:40 +05:30
short_channel_id_test.go lnwire: add alias to FundingLocked in TLV 2022-07-07 17:10:27 -04:00
shutdown.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
shutdown_test.go lnwire: add CustomRecords to shutdown message 2024-09-19 10:18:39 +02:00
signature.go lnwire: add Record() method to lnwire.Sig 2024-02-05 16:30:16 -08:00
signature_test.go lnwire: TestLightningWireProtocol quick check tests for taproot fields 2023-08-22 16:29:49 -07:00
stfu.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
test_message.go lnwire: define NodeAnnouncement2 2025-10-02 12:15:16 +02:00
test_utils.go lnwire: define NodeAnnouncement2 2025-10-02 12:15:16 +02:00
timestamps.go lnwire+discovery: rename ShortChannelIDEncoding to QueryEncoding 2023-12-11 09:12:04 +02:00
typed_delivery_addr.go lnwire: add new ChannelType field as TLV record to Open/AcceptChannel 2021-08-30 19:17:21 -07:00
typed_delivery_addr_test.go lnwire: add new ChannelType field as TLV record to Open/AcceptChannel 2021-08-30 19:17:21 -07:00
typed_fee.go multi: rename lll to ll and remove unused nolint 2024-12-04 07:20:59 +08:00
typed_fee_test.go lnwire+channeldb: parse inbound fees 2024-03-31 16:33:26 +02:00
typed_lease_expiry.go lnwire: add LeaseExpiry custom record for Open+AcceptChannel 2021-10-19 18:30:17 -07:00
typed_lease_expiry_test.go lnwire: add LeaseExpiry custom record for Open+AcceptChannel 2021-10-19 18:30:17 -07:00
update_add_htlc.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
update_add_htlc_test.go lnwire: add custom records field to type UpdateAddHtlc 2024-09-05 11:18:15 +02:00
update_fail_htlc.go lnwire: add new TestMessage interface for property tests 2025-03-20 18:28:07 -07:00
update_fail_malformed_htlc.go lnwire: add new SerializedSize method to all wire messages 2025-03-20 18:27:52 -07:00
update_fee.go lnwire: add new SerializedSize method to all wire messages 2025-03-20 18:27:52 -07:00
update_fulfill_htlc.go lnwire: add new SerializedSize method to all wire messages 2025-03-20 18:27:52 -07:00
update_fulfill_htlc_test.go lnwire: add custom records field to type UpdateFulfillHtlc 2024-09-05 11:18:15 +02:00
warning.go lnwire: add new SerializedSize method to all wire messages 2025-03-20 18:27:52 -07:00
writer.go lnwire: add encoding/decoding for DNS addr 2025-09-02 17:51:31 +00:00
writer_test.go lnwire: add encoding/decoding for DNS addr 2025-09-02 17:51:31 +00:00

lnwire

Build Status MIT licensed GoDoc

The lnwire package implements the Lightning Network wire protocol.

This package has intentionally been designed so it can be used as a standalone package for any projects needing to interface with lightning peers at the wire protocol level.

Installation and Updating

$  go get -u github.com/lightningnetwork/lnd/lnwire