diff --git a/go.mod b/go.mod index 204aef7e..7a5d2fff 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,7 @@ require ( github.com/vulsio/go-exploitdb v0.4.5 github.com/vulsio/go-kev v0.1.2 github.com/vulsio/go-msfdb v0.2.2 - github.com/vulsio/gost v0.4.3 + github.com/vulsio/gost v0.4.4 github.com/vulsio/goval-dictionary v0.9.2 go.etcd.io/bbolt v1.3.7 golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 diff --git a/go.sum b/go.sum index 64c0bcf7..60d7ad4b 100644 --- a/go.sum +++ b/go.sum @@ -789,8 +789,8 @@ github.com/vulsio/go-kev v0.1.2 h1:ZWnRqXJy/PrfGs89s9W8ilgi/Qzfgb5x5R4knLdiSKo= github.com/vulsio/go-kev v0.1.2/go.mod h1:xtrcsLfNO8xQI1jAjdIQell3/8ntCl8JBDd1fzEGPIk= github.com/vulsio/go-msfdb v0.2.2 h1:rb82u++5QZyCjcTxqQLMHGe/Ngtp0SFCl4+VauY5DBM= github.com/vulsio/go-msfdb v0.2.2/go.mod h1:lSpy43aBU6bdU09Kl+3531s2ihZbxdqw6hbTyqDzgIc= -github.com/vulsio/gost v0.4.3 h1:jr5HBRd7aPqChnFrW2zi0k9wJbng9Ss7P/IceEbP13A= -github.com/vulsio/gost v0.4.3/go.mod h1:HJJrb/9Q126yN5wDfwnkUVzRjOGotx1mllYDetLijDQ= +github.com/vulsio/gost v0.4.4 h1:nmYSaMjhW3V4gTtZ34O+/ZHSzXpLrhwO0EAHkCCmNgQ= +github.com/vulsio/gost v0.4.4/go.mod h1:HJJrb/9Q126yN5wDfwnkUVzRjOGotx1mllYDetLijDQ= github.com/vulsio/goval-dictionary v0.9.2 h1:HTgCbrBsqDrI9lFb8CDpAdQrRaWr9BLG8IeQRHCAbmo= github.com/vulsio/goval-dictionary v0.9.2/go.mod h1:SUhZkgjGkwdNyIJQRrXhQKbav3xaC8GEHqw3ojdVkrg= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= diff --git a/gost/ubuntu.go b/gost/ubuntu.go index 82d69492..ed2ba32c 100644 --- a/gost/ubuntu.go +++ b/gost/ubuntu.go @@ -270,6 +270,7 @@ func (ubu Ubuntu) detect(cves map[string]gostmodels.UbuntuCVE, fixed bool, srcPk } if len(c.fixStatuses) > 0 { + c.fixStatuses.Sort() contents = append(contents, c) } } diff --git a/models/vulninfos.go b/models/vulninfos.go index 6d8cad4f..d4e901d8 100644 --- a/models/vulninfos.go +++ b/models/vulninfos.go @@ -236,10 +236,13 @@ func (ps PackageFixStatuses) Store(pkg PackageFixStatus) PackageFixStatuses { return ps } -// Sort by Name +// Sort by Name asc, FixedIn desc func (ps PackageFixStatuses) Sort() { sort.Slice(ps, func(i, j int) bool { - return ps[i].Name < ps[j].Name + if ps[i].Name != ps[j].Name { + return ps[i].Name < ps[j].Name + } + return ps[j].FixedIn < ps[i].FixedIn }) } diff --git a/models/vulninfos_test.go b/models/vulninfos_test.go index 3830fc3e..25ad77ca 100644 --- a/models/vulninfos_test.go +++ b/models/vulninfos_test.go @@ -991,6 +991,28 @@ func TestSortPackageStatues(t *testing.T) { {Name: "b"}, }, }, + { + in: PackageFixStatuses{ + { + Name: "libzstd1", + FixedIn: "1.3.1+dfsg-1~ubuntu0.16.04.1+esm1", + }, + { + Name: "libzstd1", + FixedIn: "1.3.1+dfsg-1~ubuntu0.16.04.1+esm2", + }, + }, + out: PackageFixStatuses{ + { + Name: "libzstd1", + FixedIn: "1.3.1+dfsg-1~ubuntu0.16.04.1+esm2", + }, + { + Name: "libzstd1", + FixedIn: "1.3.1+dfsg-1~ubuntu0.16.04.1+esm1", + }, + }, + }, } for _, tt := range tests { tt.in.Sort()