From 0110d43865d98cb11ba50e117b110055486c7612 Mon Sep 17 00:00:00 2001 From: Lucas Bremgartner Date: Sun, 5 Jan 2020 20:11:17 +0000 Subject: [PATCH] cover: error on negative numbers in profiles CL 179377 introduced an optimized parser for coverage profiles. The parser replaces the following regex: ^(.+):([0-9]+)\.([0-9]+),([0-9]+)\.([0-9]+) ([0-9]+) ([0-9]+)$ With this regex, negative numbers in the coverage profiles resulted in parsing errors. With the new parser in place, this is no longer the case. This commit restores the old behavior. Change-Id: Iaa72035f1f587ed186eaf5a84b209df88e67fb57 GitHub-Last-Rev: 07470fba9d587e6d3f383409fc8cf52bb882a984 GitHub-Pull-Request: golang/tools#195 Reviewed-on: https://go-review.googlesource.com/c/tools/+/213357 Reviewed-by: Katharine Berry Reviewed-by: Brad Fitzpatrick Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- cover/profile.go | 3 +++ cover/profile_test.go | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/cover/profile.go b/cover/profile.go index 79009d0f70..0bb3541774 100644 --- a/cover/profile.go +++ b/cover/profile.go @@ -168,6 +168,9 @@ func seekBack(l string, sep byte, end int, what string) (value int, nextSep int, if err != nil { return 0, 0, fmt.Errorf("couldn't parse %q: %v", what, err) } + if i < 0 { + return 0, 0, fmt.Errorf("negative values are not allowed for %s, found %d", what, i) + } return i, start, nil } } diff --git a/cover/profile_test.go b/cover/profile_test.go index f312cf05fe..3cecdacd50 100644 --- a/cover/profile_test.go +++ b/cover/profile_test.go @@ -198,6 +198,12 @@ some/fancy/path:42.69,44.16 2`, :42.69,44.16 2 3`, expectErr: true, }, + { + name: "a negative count is an error", + input: `mode: count +some/fancy/path:42.69,44.16 2 -1`, + expectErr: true, + }, } for _, tc := range tests {