mirror of
https://github.com/golang/go
synced 2024-11-24 17:20:12 -07:00
text/template: avoid index-out-of-range panic when accessing args[0]
Fixes #70341 Change-Id: I3df0175929b4aed76522ef36aecfa924f3883d9e
This commit is contained in:
parent
8e714281e4
commit
88d346a7ca
@ -855,7 +855,7 @@ func (s *state) evalCall(dot, fun reflect.Value, isBuiltin bool, node parse.Node
|
||||
|
||||
// Special case for the "call" builtin.
|
||||
// Insert the name of the callee function as the first argument.
|
||||
if isBuiltin && name == "call" {
|
||||
if len(args) > 0 && isBuiltin && name == "call" {
|
||||
calleeName := args[0].String()
|
||||
argv = append([]reflect.Value{reflect.ValueOf(calleeName)}, argv...)
|
||||
fun = reflect.ValueOf(call)
|
||||
|
@ -1779,12 +1779,19 @@ func TestFunctionCheckDuringCall(t *testing.T) {
|
||||
input string
|
||||
data any
|
||||
wantErr string
|
||||
}{{
|
||||
name: "call nothing",
|
||||
input: `{{call}}`,
|
||||
data: tVal,
|
||||
wantErr: "wrong number of args for call: want at least 1 got 0",
|
||||
},
|
||||
}{
|
||||
{
|
||||
name: "call with no arguments",
|
||||
input: `{{ 1 | call }}`,
|
||||
data: tVal,
|
||||
wantErr: "error calling call: unreachable",
|
||||
},
|
||||
{
|
||||
name: "call nothing",
|
||||
input: `{{call}}`,
|
||||
data: tVal,
|
||||
wantErr: "wrong number of args for call: want at least 1 got 0",
|
||||
},
|
||||
{
|
||||
name: "call non-function",
|
||||
input: "{{call .True}}",
|
||||
|
Loading…
Reference in New Issue
Block a user