diff --git a/fetcher/jvn/xml/jvn.go b/fetcher/jvn/xml/jvn.go index 21136e17..0c286749 100644 --- a/fetcher/jvn/xml/jvn.go +++ b/fetcher/jvn/xml/jvn.go @@ -204,10 +204,13 @@ func Fetch(metas []models.FeedMeta) ([]Item, error) { return nil, fmt.Errorf( "Failed to unmarshal. url: %s, err: %s", res.URL, err) } - items = append(items, rdf.Items...) + for i, item := range rdf.Items { + if !(strings.Contains(item.Description, "** 未確定 **") || strings.Contains(item.Description, "** サポート外 **") || strings.Contains(item.Description, "** 削除 **")) { + items = append(items, rdf.Items[i]) + } + } } return items, nil - } // FetchConvert fetches vulnerability information from JVN and convert it to model diff --git a/fetcher/nvd/json/nvd.go b/fetcher/nvd/json/nvd.go index b391ff87..190cb80b 100644 --- a/fetcher/nvd/json/nvd.go +++ b/fetcher/nvd/json/nvd.go @@ -38,12 +38,28 @@ func FetchConvert(metas []models.FeedMeta) (cves []models.CveDetail, err error) errs := []error{} for _, res := range results { - nvd := NvdJSON{} - if err = json.Unmarshal(res.Body, &nvd); err != nil { + var nvd, nvdIncludeRejectedCve NvdJSON + if err = json.Unmarshal(res.Body, &nvdIncludeRejectedCve); err != nil { return nil, fmt.Errorf( "Failed to unmarshal. url: %s, err: %s", res.URL, err) } + + nvd.CveDataType = nvdIncludeRejectedCve.CveDataType + nvd.CveDataFormat = nvdIncludeRejectedCve.CveDataFormat + nvd.CveDataVersion = nvdIncludeRejectedCve.CveDataVersion + nvd.CveDataNumberOfCVEs = nvdIncludeRejectedCve.CveDataNumberOfCVEs + nvd.CveDataTimestamp = nvdIncludeRejectedCve.CveDataTimestamp + + // Remove rejected CVEs + for i, item := range nvdIncludeRejectedCve.CveItems { + for _, description := range item.Cve.Description.DescriptionData { + if !(strings.Contains(description.Value, "** REJECT **")) { + nvd.CveItems = append(nvd.CveItems, nvdIncludeRejectedCve.CveItems[i]) + } + } + } + cs, err := convert(nvd.CveItems) if err != nil { errs = append(errs, err)