aboutsummaryrefslogtreecommitdiff
path: root/src/text/template/parse/node.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/text/template/parse/node.go')
-rw-r--r--src/text/template/parse/node.go5
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.