From dac77d8a7cc20df35f48b596baa7c2a732f9aa63 Mon Sep 17 00:00:00 2001 From: Kevin Parsons Date: Fri, 19 Apr 2019 10:43:53 -0700 Subject: [PATCH] etw: Fix panic when provider creation fails There is a cleanup function deferred to remove the provider from the global provider map. However, this function didn't bind the value of provider ahead of time, so when the provider creation returned with nil for provider, we tried to cleanup a nil provider, and panicked. --- pkg/etw/provider.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/etw/provider.go b/pkg/etw/provider.go index 7a3c13d..c30b943 100644 --- a/pkg/etw/provider.go +++ b/pkg/etw/provider.go @@ -130,11 +130,11 @@ func NewProviderWithID(name string, id *guid.GUID, callback EnableCallback) (pro }) provider = providers.newProvider() - defer func() { + defer func(provider *Provider) { if err != nil { providers.removeProvider(provider) } - }() + }(provider) provider.ID = id provider.callback = callback