Skip to content

x/tools/cmd/goimports: MergeLine panic on weird input #20229

@josharian

Description

@josharian
package m
import("t"
"g"
"_"
"s")

Run goimports on that. Result:

panic: illegal line number

goroutine 1 [running]:
go/token.(*File).MergeLine(0xc420054ba0, 0x5)
	/Users/josh/go/tip/src/go/token/position.go:149 +0x145
golang.org/x/tools/go/ast/astutil.DeleteNamedImport(0xc4200132c0, 0xc42001ad80, 0x0, 0x0, 0xc420011241, 0x1, 0x100ea01)
	/Users/josh/src/golang.org/x/tools/go/ast/astutil/imports.go:267 +0xc3e
golang.org/x/tools/imports.fixImports(0xc4200132c0, 0xc42001ad80, 0x7fff5fbff9ea, 0x4, 0x21, 0x600, 0x1321770, 0xc42001ad80, 0x0)
	/Users/josh/src/golang.org/x/tools/imports/fix.go:207 +0x5d3
golang.org/x/tools/imports.Process(0x7fff5fbff9ea, 0x4, 0xc420168000, 0x21, 0x600, 0x1321770, 0x0, 0x4, 0xc420041da8, 0x0, ...)
	/Users/josh/src/golang.org/x/tools/imports/imports.go:58 +0x718
main.processFile(0x7fff5fbff9ea, 0x4, 0x0, 0x0, 0x1322660, 0xc42000c018, 0x1, 0x0, 0x0)
	/Users/josh/src/golang.org/x/tools/cmd/goimports/goimports.go:136 +0x139
main.gofmtMain()
	/Users/josh/src/golang.org/x/tools/cmd/goimports/goimports.go:273 +0x1fa
main.main()
	/Users/josh/src/golang.org/x/tools/cmd/goimports/goimports.go:189 +0x32

Discovered (accidentally) by go-fuzz.

Low priority, but probably an easy fix.

cc @bradfitz

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions