From 8e4521e03320083bee5a871f8976e8e2b949c71b Mon Sep 17 00:00:00 2001 From: rkfg Date: Fri, 9 Sep 2022 19:16:18 +0300 Subject: [PATCH] Prevent failure index underflow --- payment.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/payment.go b/payment.go index 9256f08..56ba249 100644 --- a/payment.go +++ b/payment.go @@ -51,6 +51,12 @@ func (r *regolancer) pay(ctx context.Context, invoice *lnrpc.AddInvoiceResponse, return fmt.Errorf("error: %s @ %d", result.Failure.Code.String(), result.Failure.FailureSourceIndex) } + if result.Failure.FailureSourceIndex == 0 { + log.Print(errColorF("%s (unexpected hop index %d, should be greater than 0)", result.Failure.Code.String(), + result.Failure.FailureSourceIndex)) + return fmt.Errorf("error: %s @ %d", result.Failure.Code.String(), + result.Failure.FailureSourceIndex) + } nodeCtx, cancel := context.WithTimeout(ctx, time.Minute) defer cancel() node1, err := r.getNodeInfo(nodeCtx, route.Hops[result.Failure.FailureSourceIndex-1].PubKey)