File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -72,6 +72,12 @@ func (r Report) formatLineByLine() string {
7272 color .CyanString ("%s:" , vulnerability .ID ),
7373 vulnerability .Describe (),
7474 ))
75+
76+ nextFix := vulnerability .NextFixedVersion (pkg .PackageDetails )
77+
78+ if nextFix != "" {
79+ lines [len (lines )- 1 ] += fmt .Sprintf (" (%s)" , nextFix )
80+ }
7581 }
7682 }
7783
Original file line number Diff line number Diff line change @@ -291,3 +291,38 @@ func (osv *OSV) IsAffected(pkg internal.PackageDetails) bool {
291291
292292 return false
293293}
294+
295+ func (osv * OSV ) NextFixedVersion (pkg internal.PackageDetails ) string {
296+ if pkg .Version == "" {
297+ return ""
298+ }
299+
300+ parsed := semantic .MustParse (pkg .Version , string (pkg .Ecosystem ))
301+
302+ for _ , affected := range osv .Affected {
303+ if affected .Package .Ecosystem == pkg .Ecosystem &&
304+ affected .Package .NormalizedName () == pkg .Name {
305+ if len (affected .Ranges ) == 0 && len (affected .Versions ) == 0 {
306+ _ , _ = fmt .Fprintf (
307+ os .Stderr ,
308+ "%s does not have any ranges or versions - this is probably a mistake!\n " ,
309+ osv .ID ,
310+ )
311+
312+ continue
313+ }
314+
315+ for _ , rang := range affected .Ranges {
316+ for _ , event := range rang .Events {
317+ if event .Fixed != "" {
318+ if r , _ := parsed .CompareStr (event .Fixed ); r == - 1 {
319+ return event .Fixed
320+ }
321+ }
322+ }
323+ }
324+ }
325+ }
326+
327+ return ""
328+ }
You can’t perform that action at this time.
0 commit comments