mirror of
https://github.com/golang/go
synced 2024-11-24 03:50:18 -07:00
cmd/go: prevent infinite loop in QueryPackage()
p = path.Dir(p) converges to either "." or "/". The current implementation of modload.QueryPackage() has a loop that terminates only on ".", not "/". This leads to the go command hanging in an infinite loop if the user manages to supply a file path starting with "/" as package path. An example of the issue is if the user (incorrectly) attempts to use an absolute directory path in an import statement within a module (import "/home/bob/myproj") and then runs go list. Fixes #27558
This commit is contained in:
parent
3aa3c052e3
commit
3a70d3a427
@ -221,7 +221,7 @@ func QueryPackage(path, query string, allowed func(module.Version) bool) (module
|
|||||||
}
|
}
|
||||||
|
|
||||||
finalErr := errMissing
|
finalErr := errMissing
|
||||||
for p := path; p != "."; p = pathpkg.Dir(p) {
|
for p := path; p != "." && p != "/"; p = pathpkg.Dir(p) {
|
||||||
info, err := Query(p, query, allowed)
|
info, err := Query(p, query, allowed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if _, ok := err.(*codehost.VCSError); ok {
|
if _, ok := err.(*codehost.VCSError); ok {
|
||||||
|
Loading…
Reference in New Issue
Block a user