mirror of
https://github.com/golang/go
synced 2024-11-18 14:54:40 -07:00
fmt: catch overflow in width and prec calculations
Fixes #10674. Change-Id: If3fae3244d87aeaa70815f499105c264394aa7ad Reviewed-on: https://go-review.googlesource.com/9657 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
b86e71f5aa
commit
660a6825ea
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user