From 83ac59b1a55a4ae728393b445e2d2438f930b767 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Fri, 30 Apr 2021 13:57:12 -0400 Subject: [PATCH] cmd/internal/archive: make error message contain printable characters only Use %q instead of %s to print unchecked bytes. Also strip the "\x00" byte, as "go116ld" reads better than "\x00go116ld". Change-Id: Id3d1f426ea91d53a55b928dac4a68e1333b80158 Reviewed-on: https://go-review.googlesource.com/c/go/+/315750 Trust: Cherry Zhang Run-TryBot: Cherry Zhang Reviewed-by: Than McIntosh Reviewed-by: Matthew Dempsky TryBot-Result: Go Bot --- src/cmd/internal/archive/archive.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cmd/internal/archive/archive.go b/src/cmd/internal/archive/archive.go index d1d51b2855..da1f293243 100644 --- a/src/cmd/internal/archive/archive.go +++ b/src/cmd/internal/archive/archive.go @@ -109,7 +109,7 @@ var ( type ErrGoObjOtherVersion struct{ magic []byte } func (e ErrGoObjOtherVersion) Error() string { - return fmt.Sprintf("go object of a different version: %s", e.magic) + return fmt.Sprintf("go object of a different version: %q", e.magic) } // An objReader is an object file reader. @@ -425,7 +425,7 @@ func (r *objReader) parseObject(o *GoObj, size int64) error { } if !bytes.Equal(p, []byte(goobj.Magic)) { if bytes.HasPrefix(p, []byte("\x00go1")) && bytes.HasSuffix(p, []byte("ld")) { - return r.error(ErrGoObjOtherVersion{p}) + return r.error(ErrGoObjOtherVersion{p[1:]}) // strip the \x00 byte } return r.error(errCorruptObject) }