lnwire: don't attempt to decode an empty/nil signature

This commit is contained in:
Olaoluwa Osuntokun 2018-06-08 13:24:59 -07:00
parent 4bde4c1c26
commit 15f812b10f
No known key found for this signature in database
GPG Key ID: 964EA263DD637C21
2 changed files with 8 additions and 1 deletions

@ -17,6 +17,10 @@ type Sig [64]byte
func NewSigFromRawSignature(sig []byte) (Sig, error) {
var b Sig
if len(sig) == 0 {
return b, fmt.Errorf("cannot decode empty signature")
}
// Extract lengths of R and S. The DER representation is laid out as
// 0x30 <length> 0x02 <length r> r 0x02 <length s> s
// which means the length of R is the 4th byte and the length of S
@ -61,6 +65,10 @@ func NewSigFromRawSignature(sig []byte) (Sig, error) {
// NewSigFromSignature creates a new signature as used on the wire, from an
// existing btcec.Signature.
func NewSigFromSignature(e *btcec.Signature) (Sig, error) {
if e == nil {
return Sig{}, fmt.Errorf("cannot decode empty signature")
}
// Serialize the signature with all the checks that entails.
return NewSigFromRawSignature(e.Serialize())
}

@ -2186,7 +2186,6 @@ func (r *rpcServer) sendPayment(stream *paymentStream) error {
PaymentRoute: marshallRoute(route),
})
if err != nil {
rpcsLog.Infof("sender rrrrr: ", err)
errChan <- err
return
}