diff --git a/cmd/csaf_checker/processor.go b/cmd/csaf_checker/processor.go index 852688c..1728e9c 100644 --- a/cmd/csaf_checker/processor.go +++ b/cmd/csaf_checker/processor.go @@ -1006,6 +1006,8 @@ func (p *processor) checkCSAFs(_ string) error { return err } } + // check for service category document + p.serviceCheck(feeds) } // No rolie feeds -> try directory_urls. diff --git a/cmd/csaf_checker/roliecheck.go b/cmd/csaf_checker/roliecheck.go index b36942d..41e257b 100644 --- a/cmd/csaf_checker/roliecheck.go +++ b/cmd/csaf_checker/roliecheck.go @@ -265,23 +265,30 @@ func containsAllKeys[K comparable, V any](m1, m2 map[K]V) bool { return true } -func (p *processor) serviceCheck(url string, feeds [][]csaf.Feed) error { +func (p *processor) serviceCheck(feeds [][]csaf.Feed) error { + // service category document should be next to the pmd + pmdURL, err := url.Parse(p.pmdURL) + if err != nil { + return err + } + baseURL, err := util.BaseURL(pmdURL) + if err != nil { + return err + } + urls := baseURL + "service.json" + // load service document p.badROLIEservice.use() - if url == "" { - p.badROLIEservice.warn("No ROLIE service document found.") - return nil - } client := p.httpClient() - res, err := client.Get(url) + res, err := client.Get(urls) if err != nil { - p.badROLIEservice.error("Cannot fetch rolie service document %s: %v", url, err) + p.badROLIEservice.error("Cannot fetch rolie service document %s: %v", urls, err) return errContinue } if res.StatusCode != http.StatusOK { p.badROLIEservice.warn("Fetching %s failed. Status code %d (%s)", - url, res.StatusCode, res.Status) + urls, res.StatusCode, res.Status) return errContinue }