diff --git a/Changes b/Changes index 0080b75..dcb809b 100644 --- a/Changes +++ b/Changes @@ -5,6 +5,8 @@ next: - add native aarch64 (arm64) packages for windows - add support for extending default filter/warn/crit - check_service: use cgroup pids if no main pid available + - fix memory leak in check_service on windows + - fix memory leak in check_drivesize on windows - fix missing scripts in inventory 0.23 Mon Apr 15 17:29:53 CEST 2024 diff --git a/pkg/snclient/check_drivesize_windows.go b/pkg/snclient/check_drivesize_windows.go index 41ff916..9965231 100644 --- a/pkg/snclient/check_drivesize_windows.go +++ b/pkg/snclient/check_drivesize_windows.go @@ -329,6 +329,9 @@ func (l *CheckDrivesize) setVolumes(requiredDisks map[string]map[string]string) return } + defer func() { + LogDebug(windows.CloseHandle(hndl)) + }() volumes = append(volumes, syscall.UTF16ToString(volumeName)) for { diff --git a/pkg/snclient/check_service_windows.go b/pkg/snclient/check_service_windows.go index fc017a1..13a3882 100644 --- a/pkg/snclient/check_service_windows.go +++ b/pkg/snclient/check_service_windows.go @@ -124,6 +124,9 @@ func (l *CheckService) Check(ctx context.Context, _ *Agent, check *CheckData, _ Output: fmt.Sprintf("Failed to open service handler: %s", err), }, nil } + defer func() { + LogDebug(ctrlMgr.Disconnect()) + }() if len(l.services) == 0 || slices.Contains(l.services, "*") { serviceList, err2 := ctrlMgr.ListServices() @@ -185,7 +188,9 @@ func (l *CheckService) getServiceDetails(ctrlMgr *mgr.Mgr, service string) (*Win return nil, fmt.Errorf("failed to open service %s: %s", service, err.Error()) } ctlSvc := &mgr.Service{Name: service, Handle: *svcHdl} - defer ctlSvc.Close() + defer func() { + LogDebug(ctlSvc.Close()) + }() statusCode, err := ctlSvc.Query() if err != nil {