aboutsummaryrefslogtreecommitdiff
path: root/src/text/template/exec.go
diff options
context:
space:
mode:
authorMeng Zhuo <mengzhuo1203@gmail.com>2020-12-10 09:52:52 +0800
committerJonathan Amsterdam <jba@google.com>2020-12-15 13:59:00 +0000
commit3298300ddf45a0792b4d8ea5e05f0fbceec4c9f9 (patch)
tree586c63698e560ddc0de78a0b8a71ae6981c80a49 /src/text/template/exec.go
parent5a25a3fd1d8248c039e34f5ae02cc9c8198fc6d6 (diff)
downloadgo-3298300ddf45a0792b4d8ea5e05f0fbceec4c9f9.tar.xz
text/template: error on range over send channel
template range require channel contains RecvDir if recv on send only channel will raise an panic. Fixes #43065 Change-Id: Ie0ea70ce60e074bf8c9f2378e07ef1d4c41dc38f Reviewed-on: https://go-review.googlesource.com/c/go/+/276532 Trust: Meng Zhuo <mzh@golangcn.org> Run-TryBot: Meng Zhuo <mzh@golangcn.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Jonathan Amsterdam <jba@google.com> Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Diffstat (limited to 'src/text/template/exec.go')
-rw-r--r--src/text/template/exec.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/text/template/exec.go b/src/text/template/exec.go
index 7ac5175006..19154fc640 100644
--- a/src/text/template/exec.go
+++ b/src/text/template/exec.go
@@ -373,6 +373,10 @@ func (s *state) walkRange(dot reflect.Value, r *parse.RangeNode) {
if val.IsNil() {
break
}
+ if val.Type().ChanDir() == reflect.SendDir {
+ s.errorf("range over send-only channel %v", val)
+ break
+ }
i := 0
for ; ; i++ {
elem, ok := val.Recv()