From cc2fbd18b1ed29c65926979f0871ba0d36cec61b Mon Sep 17 00:00:00 2001 From: Elle Mouton Date: Fri, 15 Jul 2022 14:04:19 +0200 Subject: [PATCH] rpcperms: re-init mw lookup map after removal of one After removing a registered middlware from the slice, we need to update the index lookup map with the updated index for each middleware. --- docs/release-notes/release-notes-0.15.1.md | 3 +++ rpcperms/interceptor.go | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/docs/release-notes/release-notes-0.15.1.md b/docs/release-notes/release-notes-0.15.1.md index 48369482d..b1f7946e1 100644 --- a/docs/release-notes/release-notes-0.15.1.md +++ b/docs/release-notes/release-notes-0.15.1.md @@ -84,6 +84,9 @@ * [Fixes a key scope issue preventing new remote signing setups to be created with `v0.15.0-beta`](https://github.com/lightningnetwork/lnd/pull/6714). +* [Re-initialise registered middleware index lookup map after removal of a + registered middleware](https://github.com/lightningnetwork/lnd/pull/6739) + ## Code Health ### Code cleanup, refactor, typo fixes diff --git a/rpcperms/interceptor.go b/rpcperms/interceptor.go index 07ee4fccb..bde5c6181 100644 --- a/rpcperms/interceptor.go +++ b/rpcperms/interceptor.go @@ -489,10 +489,17 @@ func (r *InterceptorChain) RemoveMiddleware(middlewareName string) { return } delete(r.registeredMiddlewareNames, middlewareName) + r.registeredMiddleware = append( r.registeredMiddleware[:index], r.registeredMiddleware[index+1:]..., ) + + // Re-initialise the middleware look-up map with the updated indexes. + r.registeredMiddlewareNames = make(map[string]int) + for i, mw := range r.registeredMiddleware { + r.registeredMiddlewareNames[mw.middlewareName] = i + } } // CustomCaveatSupported makes sure a middleware that handles the given custom