From 680867cdb5ff5334e8d10a46d250e9e01da2db4c Mon Sep 17 00:00:00 2001 From: phenpessoa Date: Mon, 13 Mar 2023 19:54:52 -0300 Subject: [PATCH] benchfmt: return an error in case of a non UTF-8 encoded file Currently, when using the benchstat tool to read files that are not UTF-8 encoded, it will fail silently. With this patch, when parsing non UTF-8 encoded files, benchfmt will now return an error instead letting the user know their input file is not properly formatted. Fixes https://github.com/golang/go/issues/58579 --- benchfmt/reader.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/benchfmt/reader.go b/benchfmt/reader.go index 32b0ec6..6a84631 100644 --- a/benchfmt/reader.go +++ b/benchfmt/reader.go @@ -149,6 +149,11 @@ func (r *Reader) Scan() bool { r.result.line++ // We do everything in byte buffers to avoid allocation. line := r.s.Bytes() + // We only accept utf-8 encoded files. + if !utf8.Valid(line) { + r.err = fmt.Errorf("%s: invalid encode, only utf-8 encoded files are supported", r.result.fileName) + return false + } // Most lines are benchmark lines, and we can check // for that very quickly, so start with that. if bytes.HasPrefix(line, benchmarkPrefix) {