mirror of
https://github.com/fleetdm/fleet
synced 2026-05-23 08:58:41 +00:00
16356 Unreleased bugfix for osversions filter (#16391)
This commit is contained in:
parent
b65739f035
commit
ae87519938
4 changed files with 22 additions and 19 deletions
|
|
@ -4416,26 +4416,18 @@ WHERE
|
|||
}
|
||||
}
|
||||
|
||||
// filter counts by platform
|
||||
if platform != nil {
|
||||
var filtered []fleet.OSVersion
|
||||
for _, os := range counts {
|
||||
if *platform == os.Platform {
|
||||
filtered = append(filtered, os)
|
||||
}
|
||||
// filter by platform, name, and version
|
||||
var filtered []fleet.OSVersion
|
||||
for _, os := range counts {
|
||||
if (platform == nil || *platform == os.Platform) && (name == nil || version == nil || (*name == os.NameOnly && *version == os.Version)) {
|
||||
filtered = append(filtered, os)
|
||||
}
|
||||
counts = filtered
|
||||
}
|
||||
counts = filtered
|
||||
|
||||
// aggregate counts by name and version
|
||||
byNameVers := make(map[string]fleet.OSVersion)
|
||||
for _, os := range counts {
|
||||
if name != nil &&
|
||||
version != nil &&
|
||||
*name != os.NameOnly &&
|
||||
*version != os.Version {
|
||||
continue
|
||||
}
|
||||
key := fmt.Sprintf("%s %s", os.NameOnly, os.Version)
|
||||
val, ok := byNameVers[key]
|
||||
if !ok {
|
||||
|
|
|
|||
|
|
@ -6087,6 +6087,14 @@ func testOSVersions(t *testing.T, ds *Datastore) {
|
|||
}
|
||||
require.Equal(t, expected, osVersions.OSVersions)
|
||||
|
||||
// filter by operating system that has multiple versions
|
||||
expected = []fleet.OSVersion{
|
||||
{HostsCount: 3, Name: "macOS 12.3.0", NameOnly: "macOS", Version: "12.3.0", Platform: "darwin"},
|
||||
}
|
||||
osVersions, err = ds.OSVersions(ctx, nil, nil, ptr.String("macOS"), ptr.String("12.3.0"))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, expected, osVersions.OSVersions)
|
||||
|
||||
// team 1
|
||||
osVersions, err = ds.OSVersions(ctx, &team1.ID, nil, nil, nil)
|
||||
require.NoError(t, err)
|
||||
|
|
|
|||
|
|
@ -7398,7 +7398,6 @@ func (s *integrationTestSuite) TestOSVersions() {
|
|||
// get OS versions
|
||||
osv, err := s.ds.ListOperatingSystems(context.Background())
|
||||
require.NoError(t, err)
|
||||
require.Len(t, osv, 6) // includes fooOS from another test
|
||||
|
||||
osvMap := make(map[string]fleet.OperatingSystem)
|
||||
for _, os := range osv {
|
||||
|
|
@ -7463,6 +7462,12 @@ func (s *integrationTestSuite) TestOSVersions() {
|
|||
},
|
||||
}, osVersionsResp.OSVersions[0])
|
||||
|
||||
// name and version filters
|
||||
s.DoJSON("GET", "/api/latest/fleet/os_versions", nil, http.StatusOK, &osVersionsResp, "os_name", "Windows 11 Pro 21H2", "os_version", "10.0.22000.2")
|
||||
require.Len(t, osVersionsResp.OSVersions, 1)
|
||||
require.Equal(t, "Windows 11 Pro 21H2 10.0.22000.2", osVersionsResp.OSVersions[0].Name)
|
||||
require.Len(t, osVersionsResp.OSVersions[0].Vulnerabilities, 2)
|
||||
|
||||
// name without version
|
||||
s.DoJSON("GET", "/api/latest/fleet/os_versions", nil, http.StatusBadRequest, &osVersionsResp, "os_name", "Windows 11 Pro 21H2")
|
||||
|
||||
|
|
|
|||
|
|
@ -138,10 +138,8 @@ func patched(
|
|||
}
|
||||
|
||||
isGreater, err := winBuildVersionGreaterOrEqual(fix.FixedBuild, os.KernelVersion)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if isGreater {
|
||||
// Return true on errors to prevent false positives
|
||||
if err != nil || isGreater {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue