1
0
Fork 0
mirror of https://github.com/gocsaf/csaf.git synced 2025-12-22 11:55:40 +01:00

Implement validation for ROLIE json schema

This commit is contained in:
Fadi Abbud 2022-05-16 11:15:46 +02:00
parent c4deef74eb
commit 726711c688
3 changed files with 291 additions and 2 deletions

View file

@ -453,14 +453,37 @@ func (p *processor) processROLIEFeed(feed string) error {
feed, res.StatusCode, res.Status)
return errContinue
}
rfeed, err := func() (*csaf.ROLIEFeed, error) {
rfeed, rolieDoc, err := func() (*csaf.ROLIEFeed, interface{}, error) {
defer res.Body.Close()
return csaf.LoadROLIEFeed(res.Body)
all, err := io.ReadAll(res.Body)
if err != nil {
return nil, nil, err
}
feed, err := csaf.LoadROLIEFeed(bytes.NewReader(all))
if err != nil {
return nil, nil, err
}
var rolieDoc interface{}
err = json.NewDecoder(bytes.NewReader(all)).Decode(&rolieDoc)
return feed, rolieDoc, err
}()
if err != nil {
p.badProviderMetadata.add("Loading ROLIE feed failed: %v.", err)
return errContinue
}
errors, err := csaf.ValidateROLIE(rolieDoc)
if err != nil {
return err
}
if len(errors) > 0 {
p.badProviderMetadata.add("%s: Validating against JSON schema failed:", feed)
for _, msg := range errors {
p.badProviderMetadata.add(strings.ReplaceAll(msg, `%`, `%%`))
}
}
base, err := util.BaseURL(feed)
if err != nil {
p.badProviderMetadata.add("Bad base path: %v", err)