From 496819729719f9d07692195e0a94d6edd2251389 Mon Sep 17 00:00:00 2001 From: "David R. Jenni" Date: Thu, 23 Feb 2017 18:31:04 +0100 Subject: [PATCH] x/tools/refactor/rename: fix nil pointer dereference. Fix a nil pointer dereference by checking the error returned by conf.Load. Bug was reported on Reddit: https://www.reddit.com/r/golang/comments/5vo0fb/ Change-Id: I2ad6f03922b772f03e282a0af6eea24f8de9cef8 Reviewed-on: https://go-review.googlesource.com/37432 Reviewed-by: Alan Donovan --- refactor/rename/mvpkg_test.go | 8 ++++++++ refactor/rename/rename.go | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/refactor/rename/mvpkg_test.go b/refactor/rename/mvpkg_test.go index 674fe6cc97..7f5b135381 100644 --- a/refactor/rename/mvpkg_test.go +++ b/refactor/rename/mvpkg_test.go @@ -72,6 +72,14 @@ var _ foo.T "support move destinations whose base names are not valid " + "go identifiers", }, + { + ctxt: fakeContext(map[string][]string{ + "foo": {``}, + "bar": {`package bar`}, + }), + from: "foo", to: "bar", + want: `no initial packages were loaded`, + }, } for _, test := range tests { diff --git a/refactor/rename/rename.go b/refactor/rename/rename.go index 127647bf5d..6d84024bbf 100644 --- a/refactor/rename/rename.go +++ b/refactor/rename/rename.go @@ -392,6 +392,9 @@ func loadProgram(ctxt *build.Context, pkgs map[string]bool) (*loader.Program, er // It would be nice if the loader API permitted "AllowErrors: soft". conf.AllowErrors = true prog, err := conf.Load() + if err != nil { + return nil, err + } var errpkgs []string // Report hard errors in indirectly imported packages. for _, info := range prog.AllPackages { @@ -408,7 +411,7 @@ func loadProgram(ctxt *build.Context, pkgs map[string]bool) (*loader.Program, er return nil, fmt.Errorf("couldn't load packages due to errors: %s%s", strings.Join(errpkgs, ", "), more) } - return prog, err + return prog, nil } func containsHardErrors(errors []error) bool {