diff options
Diffstat (limited to 'src/text/template/parse/node.go')
| -rw-r--r-- | src/text/template/parse/node.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/text/template/parse/node.go b/src/text/template/parse/node.go index 55c37f6dba..728181baae 100644 --- a/src/text/template/parse/node.go +++ b/src/text/template/parse/node.go @@ -592,6 +592,11 @@ func (t *Tree) newNumber(pos Pos, text string, typ itemType) (*NumberNode, error } else { f, err := strconv.ParseFloat(text, 64) if err == nil { + // If we parsed it as a float but it looks like an integer, + // it's a huge number too large to fit in an int. Reject it. + if !strings.ContainsAny(text, ".eE") { + return nil, fmt.Errorf("integer overflow: %q", text) + } n.IsFloat = true n.Float64 = f // If a floating-point extraction succeeded, extract the int if needed. |
