From 34fd27280ad71b830dd031e01fac32645a28e409 Mon Sep 17 00:00:00 2001 From: Conner Fromknecht Date: Mon, 16 Dec 2019 13:06:59 -0800 Subject: [PATCH] peer: validate remote peer's feature deps --- peer.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/peer.go b/peer.go index be8a1d26b..53092edbd 100644 --- a/peer.go +++ b/peer.go @@ -22,6 +22,7 @@ import ( "github.com/lightningnetwork/lnd/chainntnfs" "github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/contractcourt" + "github.com/lightningnetwork/lnd/feature" "github.com/lightningnetwork/lnd/htlcswitch" "github.com/lightningnetwork/lnd/lnpeer" "github.com/lightningnetwork/lnd/lnwallet" @@ -2476,6 +2477,14 @@ func (p *peer) handleInitMsg(msg *lnwire.Init) error { return err } + // Ensure the remote party's feature vector contains all transistive + // dependencies. We know ours are are correct since they are validated + // during the feature manager's instantiation. + err = feature.ValidateDeps(p.remoteFeatures) + if err != nil { + return fmt.Errorf("peer set invalid feature vector: %v", err) + } + // Now that we know we understand their requirements, we'll check to // see if they don't support anything that we deem to be mandatory. switch {