Commit f2c5f57a authored by Josh Bleecher Snyder's avatar Josh Bleecher Snyder

cmd/compile: prevent panic while formatting func(...T) with unknown T

Compile:

package p

var f = func(...A)


Before this CL:

x.go:3:13: type %!v(PANIC=runtime error: invalid memory address or nil pointer dereference) is not an expression
x.go:3:17: undefined: A


After this CL:

x.go:3:13: type func(...<T>) is not an expression
x.go:3:17: undefined: A


Found with go-fuzz.

Fixes #20233

Change-Id: Ibb232b3954c4091071440eba48b44c4022a8083f
Reviewed-on: https://go-review.googlesource.com/42610
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
parent 25db5d1a
......@@ -1754,7 +1754,11 @@ func fldconv(f *types.Field, flag FmtFlag, mode fmtMode, depth int) string {
var typ string
if f.Isddd() {
typ = "..." + tmodeString(f.Type.Elem(), mode, depth)
var et *types.Type
if f.Type != nil {
et = f.Type.Elem()
}
typ = "..." + tmodeString(et, mode, depth)
} else {
typ = tmodeString(f.Type, mode, depth)
}
......
// errorcheck
// Copyright 2017 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.
// Issue 20233: panic while formatting an error message
package p
var f = func(...A) // ERROR "type func(....*) is not an expression" ERROR "undefined: A"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment