go/types: don't use user string as format string

Fixes #60500.

Change-Id: I272c71071f239d5c9472e19ae25461001e7f6a8f
Reviewed-on: https://go-review.googlesource.com/c/go/+/499275
Reviewed-by: Robert Griesemer <gri@google.com>
Run-TryBot: Robert Griesemer <gri@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
Robert Griesemer 2023-05-30 08:38:56 -07:00 committed by Gopher Robot
parent c99fee0545
commit 0445497e50
2 changed files with 12 additions and 1 deletions

View File

@ -303,7 +303,7 @@ func newErrorf(at positioner, code Code, format string, args ...any) *error_ {
}
func (check *Checker) error(at positioner, code Code, msg string) {
check.report(newErrorf(at, code, msg))
check.report(newErrorf(at, code, "%s", msg))
}
func (check *Checker) errorf(at positioner, code Code, format string, args ...any) {

View File

@ -0,0 +1,11 @@
// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package p
func _() {
log("This is a test %v" /* ERROR "cannot use \"This is a test %v\" (untyped string constant) as bool value in argument to log" */, "foo")
}
func log(enabled bool, format string, args ...any)