mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-21 22:25:27 +00:00
Merge pull request #6465 from projectdiscovery/4690_dont_load_dup_templates
dont load templates with the same ID
This commit is contained in:
commit
1acd40f97f
@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/projectdiscovery/nuclei/v3/pkg/workflows"
|
"github.com/projectdiscovery/nuclei/v3/pkg/workflows"
|
||||||
"github.com/projectdiscovery/retryablehttp-go"
|
"github.com/projectdiscovery/retryablehttp-go"
|
||||||
"github.com/projectdiscovery/utils/errkit"
|
"github.com/projectdiscovery/utils/errkit"
|
||||||
|
mapsutil "github.com/projectdiscovery/utils/maps"
|
||||||
sliceutil "github.com/projectdiscovery/utils/slice"
|
sliceutil "github.com/projectdiscovery/utils/slice"
|
||||||
stringsutil "github.com/projectdiscovery/utils/strings"
|
stringsutil "github.com/projectdiscovery/utils/strings"
|
||||||
syncutil "github.com/projectdiscovery/utils/sync"
|
syncutil "github.com/projectdiscovery/utils/sync"
|
||||||
@ -315,6 +316,8 @@ func (store *Store) LoadTemplatesOnlyMetadata() error {
|
|||||||
}
|
}
|
||||||
templatesCache := parserItem.Cache()
|
templatesCache := parserItem.Cache()
|
||||||
|
|
||||||
|
loadedTemplateIDs := mapsutil.NewSyncLockMap[string, struct{}]()
|
||||||
|
|
||||||
for templatePath := range validPaths {
|
for templatePath := range validPaths {
|
||||||
template, _, _ := templatesCache.Has(templatePath)
|
template, _, _ := templatesCache.Has(templatePath)
|
||||||
|
|
||||||
@ -339,6 +342,12 @@ func (store *Store) LoadTemplatesOnlyMetadata() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if template != nil {
|
if template != nil {
|
||||||
|
if loadedTemplateIDs.Has(template.ID) {
|
||||||
|
store.logger.Debug().Msgf("Skipping duplicate template ID '%s' from path '%s'", template.ID, templatePath)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
_ = loadedTemplateIDs.Set(template.ID, struct{}{})
|
||||||
template.Path = templatePath
|
template.Path = templatePath
|
||||||
store.templates = append(store.templates, template)
|
store.templates = append(store.templates, template)
|
||||||
}
|
}
|
||||||
@ -492,8 +501,16 @@ func (store *Store) LoadTemplatesWithTags(templatesList, tags []string) []*templ
|
|||||||
templatePathMap := store.pathFilter.Match(includedTemplates)
|
templatePathMap := store.pathFilter.Match(includedTemplates)
|
||||||
|
|
||||||
loadedTemplates := sliceutil.NewSyncSlice[*templates.Template]()
|
loadedTemplates := sliceutil.NewSyncSlice[*templates.Template]()
|
||||||
|
loadedTemplateIDs := mapsutil.NewSyncLockMap[string, struct{}]()
|
||||||
|
|
||||||
loadTemplate := func(tmpl *templates.Template) {
|
loadTemplate := func(tmpl *templates.Template) {
|
||||||
|
if loadedTemplateIDs.Has(tmpl.ID) {
|
||||||
|
store.logger.Debug().Msgf("Skipping duplicate template ID '%s' from path '%s'", tmpl.ID, tmpl.Path)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_ = loadedTemplateIDs.Set(tmpl.ID, struct{}{})
|
||||||
|
|
||||||
loadedTemplates.Append(tmpl)
|
loadedTemplates.Append(tmpl)
|
||||||
// increment signed/unsigned counters
|
// increment signed/unsigned counters
|
||||||
if tmpl.Verified {
|
if tmpl.Verified {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user