From 1a1dd2a2b30b0599e7200a8239f20ebf99bafb6e Mon Sep 17 00:00:00 2001 From: Bruno Garcia Date: Fri, 23 Aug 2024 16:22:54 -0300 Subject: [PATCH] btcjson: check if both begin and end are numbers in `UnmarshalJSON` --- btcjson/walletsvrcmds.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/btcjson/walletsvrcmds.go b/btcjson/walletsvrcmds.go index 9b787f60c4..2613acf8a4 100644 --- a/btcjson/walletsvrcmds.go +++ b/btcjson/walletsvrcmds.go @@ -903,9 +903,14 @@ func (r *DescriptorRange) UnmarshalJSON(data []byte) error { if len(v) != 2 { return fmt.Errorf("expected [begin,end] integer range, got: %v", unmarshalled) } + begin, ok1 := v[0].(float64) + end, ok2 := v[1].(float64) + if !ok1 || !ok2 { + return fmt.Errorf("expected both begin and end to be numbers, got: %v", v) + } r.Value = []int{ - int(v[0].(float64)), - int(v[1].(float64)), + int(begin), + int(end), } default: return fmt.Errorf("invalid descriptor range value: %v", unmarshalled)