tpl: check that types in args match the target func's type

Fixes #1095
This commit is contained in:
bep 2015-05-01 17:00:22 +02:00
parent be049ff96a
commit be15927819
2 changed files with 10 additions and 1 deletions

View file

@ -672,6 +672,12 @@ func applyFnToThis(fn, this reflect.Value, args ...interface{}) (reflect.Value,
return reflect.ValueOf(nil), errors.New("Too many arguments")
}
for i := 0; i < num; i++ {
if xt, targ := n[i].Type(), fn.Type().In(i); !xt.AssignableTo(targ) {
return reflect.ValueOf(nil), errors.New("called apply using " + xt.String() + " as type " + targ.String())
}
}
res := fn.Call(n)
if len(res) == 1 || res[1].IsNil() {

View file

@ -23,7 +23,10 @@ func TestTplGoFuzzReports(t *testing.T) {
{"{{ slicestr \"000000\" 10}}", 2},
// Issue #1091
{"{{apply .C \"first\" 0 0 0}}", 2},
{"{{seq 3e80}}", 2}} {
{"{{seq 3e80}}", 2},
// Issue #1095
{"{{apply .C \"urlize\" " +
"\".\"}}", 2}} {
templ := New()
d := &Data{