diff options
| author | Andrew Gerrand <adg@golang.org> | 2016-05-12 13:55:46 -0700 |
|---|---|---|
| committer | Andrew Gerrand <adg@golang.org> | 2016-05-12 22:32:30 +0000 |
| commit | eb69476c66339ca494f98e65a78d315da99a9c79 (patch) | |
| tree | 900cb75a8839cff859de0844d86c2401dc87051d /src/text/template/exec_test.go | |
| parent | 8f48efb31c7cdddeec7d4221174254466b0891dd (diff) | |
| download | go-eb69476c66339ca494f98e65a78d315da99a9c79.tar.xz | |
text/template: detect pathologically recursive template invocations
Return an error message instead of eating memory and eventually
triggering a stack overflow.
Fixes #15618
Change-Id: I3dcf1d669104690a17847a20fbfeb6d7e39e8751
Reviewed-on: https://go-review.googlesource.com/23091
Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'src/text/template/exec_test.go')
| -rw-r--r-- | src/text/template/exec_test.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/text/template/exec_test.go b/src/text/template/exec_test.go index bc2aa683ec..3ef065edcf 100644 --- a/src/text/template/exec_test.go +++ b/src/text/template/exec_test.go @@ -1297,3 +1297,16 @@ func TestMissingFieldOnNil(t *testing.T) { t.Errorf("got error %q, want %q", got, want) } } + +func TestMaxExecDepth(t *testing.T) { + tmpl := Must(New("tmpl").Parse(`{{template "tmpl" .}}`)) + err := tmpl.Execute(ioutil.Discard, nil) + got := "<nil>" + if err != nil { + got = err.Error() + } + const want = "exceeded maximum template depth" + if !strings.Contains(got, want) { + t.Errorf("got error %q; want %q", got, want) + } +} |
