From 29e48f402a3adb2a42d2f48c99b74333e9194af3 Mon Sep 17 00:00:00 2001 From: Tim Lee Date: Wed, 23 Aug 2023 13:57:18 -0600 Subject: [PATCH] Hotfix: add empty host slice validation in ListHosts (#13483) --- server/datastore/mysql/policies.go | 4 ++++ server/datastore/mysql/policies_test.go | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/server/datastore/mysql/policies.go b/server/datastore/mysql/policies.go index b2c90b91ba..36670195ca 100644 --- a/server/datastore/mysql/policies.go +++ b/server/datastore/mysql/policies.go @@ -748,6 +748,10 @@ func (ds *Datastore) CleanupPolicyMembership(ctx context.Context, now time.Time) } func (ds *Datastore) UpdatePolicyFailureCountsForHosts(ctx context.Context, hosts []*fleet.Host) ([]*fleet.Host, error) { + if len(hosts) == 0 { + return hosts, nil + } + // Get policy failure counts for each host hostIDs := make([]uint, 0, len(hosts)) diff --git a/server/datastore/mysql/policies_test.go b/server/datastore/mysql/policies_test.go index fc7a6c4510..3a84fe3288 100644 --- a/server/datastore/mysql/policies_test.go +++ b/server/datastore/mysql/policies_test.go @@ -2271,4 +2271,9 @@ func testUpdatePolicyFailureCountsForHosts(t *testing.T, ds *Datastore) { // host 3 doesn't have any policy membership assert.Equal(t, 0, hostsUpdated[3].TotalIssuesCount) assert.Equal(t, 0, hostsUpdated[3].FailingPoliciesCount) + + // return empty list if no hosts are passed + hostsUpdated, err = ds.UpdatePolicyFailureCountsForHosts(ctx, []*fleet.Host{}) + require.NoError(t, err) + require.Len(t, hostsUpdated, 0) }