From db7154a40131306b5915101c02cc17d4c49e1589 Mon Sep 17 00:00:00 2001 From: Wilmer Paulino Date: Tue, 9 Jan 2018 01:01:24 -0500 Subject: [PATCH] invoice: sanity check empty fallback addr field This commit allows parseFallbackAddr to return an error when parsing an empty fallback address field, rather than crash. --- zpay32/invoice.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/zpay32/invoice.go b/zpay32/invoice.go index aa01f73a..836d6887 100644 --- a/zpay32/invoice.go +++ b/zpay32/invoice.go @@ -797,7 +797,13 @@ func parseMinFinalCLTVExpiry(data []byte) (*uint64, error) { // parseFallbackAddr converts the data (encoded in base32) into a fallback // on-chain address. func parseFallbackAddr(data []byte, net *chaincfg.Params) (btcutil.Address, error) { + // Checks if the data is empty or contains a version without an address. + if len(data) < 2 { + return nil, fmt.Errorf("empty fallback address field") + } + var addr btcutil.Address + version := data[0] switch version { case 0: