1
0
Fork 0
mirror of https://github.com/gocsaf/csaf.git synced 2025-12-22 18:15:42 +01:00

Merge pull request #235 from csaf-poc/bad-dirs-only-once

Only report bad directories in listing check only once.
This commit is contained in:
Fadi Abbud 2022-07-19 12:51:29 +02:00 committed by GitHub
commit 6a87157184
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 2 deletions

View file

@ -25,7 +25,11 @@ type (
pages map[string]*pageContent
)
func (pgs pages) listed(path string, pro *processor) (bool, error) {
func (pgs pages) listed(
path string,
pro *processor,
badDirs map[string]struct{},
) (bool, error) {
pathURL, err := url.Parse(path)
if err != nil {
return false, err
@ -50,6 +54,10 @@ func (pgs pages) listed(path string, pro *processor) (bool, error) {
return false, err
}
if _, ok := badDirs[base]; ok {
return false, errContinue
}
// load page
client := pro.httpClient()
pro.checkTLS(base)
@ -59,11 +67,13 @@ func (pgs pages) listed(path string, pro *processor) (bool, error) {
if err != nil {
pro.badDirListings.error("Fetching %s failed: %v", base, err)
badDirs[base] = struct{}{}
return false, errContinue
}
if res.StatusCode != http.StatusOK {
pro.badDirListings.error("Fetching %s failed. Status code %d (%s)",
base, res.StatusCode, res.Status)
badDirs[base] = struct{}{}
return false, errContinue
}

View file

@ -954,8 +954,10 @@ func (p *processor) checkListing(string) error {
var unlisted []string
badDirs := map[string]struct{}{}
for f := range p.alreadyChecked {
found, err := pgs.listed(f, p)
found, err := pgs.listed(f, p, badDirs)
if err != nil && err != errContinue {
return err
}