Ensure Headless protocol accesses flow protocol variables (#6003)

This commit is contained in:
Dogan Can Bakir 2025-01-31 10:59:11 +03:00 committed by GitHub
parent 540711cf9d
commit d77eab6e87
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -52,14 +52,13 @@ func (request *Request) ExecuteWithResults(input *contextargs.Context, metadata,
} }
vars := protocolutils.GenerateVariablesWithContextArgs(input, false) vars := protocolutils.GenerateVariablesWithContextArgs(input, false)
payloads := generators.BuildPayloadFromOptions(request.options.Options) optionVars := generators.BuildPayloadFromOptions(request.options.Options)
// add templatecontext variables to varMap // add templatecontext variables to varMap
values := generators.MergeMaps(vars, metadata, payloads)
if request.options.HasTemplateCtx(input.MetaInput) { if request.options.HasTemplateCtx(input.MetaInput) {
values = generators.MergeMaps(values, request.options.GetTemplateCtx(input.MetaInput).GetAll()) vars = generators.MergeMaps(vars, metadata, optionVars, request.options.GetTemplateCtx(input.MetaInput).GetAll())
} }
variablesMap := request.options.Variables.Evaluate(values) variablesMap := request.options.Variables.Evaluate(vars)
payloads = generators.MergeMaps(variablesMap, payloads, request.options.Constants) vars = generators.MergeMaps(vars, variablesMap, request.options.Constants)
// check for operator matches by wrapping callback // check for operator matches by wrapping callback
gotmatches := false gotmatches := false
@ -71,7 +70,7 @@ func (request *Request) ExecuteWithResults(input *contextargs.Context, metadata,
} }
// verify if fuzz elaboration was requested // verify if fuzz elaboration was requested
if len(request.Fuzzing) > 0 { if len(request.Fuzzing) > 0 {
return request.executeFuzzingRule(input, payloads, previous, wrappedCallback) return request.executeFuzzingRule(input, vars, previous, wrappedCallback)
} }
if request.generator != nil { if request.generator != nil {
iterator := request.generator.NewIterator() iterator := request.generator.NewIterator()
@ -83,13 +82,13 @@ func (request *Request) ExecuteWithResults(input *contextargs.Context, metadata,
if gotmatches && (request.StopAtFirstMatch || request.options.Options.StopAtFirstMatch || request.options.StopAtFirstMatch) { if gotmatches && (request.StopAtFirstMatch || request.options.Options.StopAtFirstMatch || request.options.StopAtFirstMatch) {
return nil return nil
} }
value = generators.MergeMaps(value, payloads) value = generators.MergeMaps(value, vars)
if err := request.executeRequestWithPayloads(input, value, previous, wrappedCallback); err != nil { if err := request.executeRequestWithPayloads(input, value, previous, wrappedCallback); err != nil {
return err return err
} }
} }
} else { } else {
value := maps.Clone(payloads) value := maps.Clone(vars)
if err := request.executeRequestWithPayloads(input, value, previous, wrappedCallback); err != nil { if err := request.executeRequestWithPayloads(input, value, previous, wrappedCallback); err != nil {
return err return err
} }