From 5dcd2a453062853863772da5147289ad6d47f851 Mon Sep 17 00:00:00 2001 From: "Johan T. Halseth" Date: Wed, 10 Oct 2018 15:05:21 +0200 Subject: [PATCH 1/2] gossiper: validate our own node announement --- discovery/gossiper.go | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/discovery/gossiper.go b/discovery/gossiper.go index e488e220..b74a2f65 100644 --- a/discovery/gossiper.go +++ b/discovery/gossiper.go @@ -1577,22 +1577,20 @@ func (d *AuthenticatedGossiper) processNetworkAnnouncement( case *lnwire.NodeAnnouncement: timestamp := time.Unix(int64(msg.Timestamp), 0) - if nMsg.isRemote { - // We'll quickly ask the router if it already has a - // newer update for this node so we can skip validating - // signatures if not required. - if d.cfg.Router.IsStaleNode(msg.NodeID, timestamp) { - nMsg.err <- nil - return nil - } + // We'll quickly ask the router if it already has a + // newer update for this node so we can skip validating + // signatures if not required. + if d.cfg.Router.IsStaleNode(msg.NodeID, timestamp) { + nMsg.err <- nil + return nil + } - if err := routing.ValidateNodeAnn(msg); err != nil { - err := fmt.Errorf("unable to validate "+ - "node announcement: %v", err) - log.Error(err) - nMsg.err <- err - return nil - } + if err := routing.ValidateNodeAnn(msg); err != nil { + err := fmt.Errorf("unable to validate "+ + "node announcement: %v", err) + log.Error(err) + nMsg.err <- err + return nil } features := lnwire.NewFeatureVector( From 3d7bbd6d7216821b97a80c5496a70d458f25814e Mon Sep 17 00:00:00 2001 From: "Johan T. Halseth" Date: Wed, 10 Oct 2018 15:05:59 +0200 Subject: [PATCH 2/2] channeldb/graph: write max 80 sig len for nodes --- channeldb/graph.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/channeldb/graph.go b/channeldb/graph.go index 70eb55ee..21680eb4 100644 --- a/channeldb/graph.go +++ b/channeldb/graph.go @@ -2839,6 +2839,12 @@ func putLightningNode(nodeBucket *bbolt.Bucket, aliasBucket *bbolt.Bucket, } } + sigLen := len(node.AuthSigBytes) + if sigLen > 80 { + return fmt.Errorf("max sig len allowed is 80, had %v", + sigLen) + } + err = wire.WriteVarBytes(&b, 0, node.AuthSigBytes) if err != nil { return err