Commit 660a6825 authored by Rob Pike's avatar Rob Pike

fmt: catch overflow in width and prec calculations

Fixes #10674.

Change-Id: If3fae3244d87aeaa70815f499105c264394aa7ad
Reviewed-on: https://go-review.googlesource.com/9657Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
parent b86e71f5
......@@ -537,6 +537,7 @@ var fmtTests = []struct {
{"%s", nil, "%!s(<nil>)"},
{"%T", nil, "<nil>"},
{"%-1", 100, "%!(NOVERB)%!(EXTRA int=100)"},
{"%017091901790959340919092959340919017929593813360", 0, "%!(NOVERB)%!(EXTRA int=0)"},
// The "<nil>" show up because maps are printed by
// first obtaining a list of keys and then looking up
......
......@@ -292,6 +292,9 @@ func parsenum(s string, start, end int) (num int, isnum bool, newi int) {
}
for newi = start; newi < end && '0' <= s[newi] && s[newi] <= '9'; newi++ {
num = num*10 + int(s[newi]-'0')
if num < 0 {
return 0, false, end // Overflow; crazy long number most likely.
}
isnum = true
}
return
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment