From: Elias Naur Date: Tue, 12 Mar 2019 15:21:43 +0000 (+0100) Subject: misc/android: fix detection of GOROOT tests X-Git-Tag: go1.13beta1~1086 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=10aede26d0603c16f6f66c87a84bccfeb2e0c8e0;p=gostls13.git misc/android: fix detection of GOROOT tests strings.HasPrefix is not good enough to determine whether a path is a subdirectory of another because it does not respect path boundaries. filepath.Rel is good eonugh as long as we filter out results that use parent directories, "..". Hopefully fix the android emulator builders on the subrepositories. Change-Id: I17ee7e0028c0b0b26a6c5f67629f53c9a660c6e5 Reviewed-on: https://go-review.googlesource.com/c/go/+/167117 Run-TryBot: Elias Naur Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- diff --git a/misc/android/go_android_exec.go b/misc/android/go_android_exec.go index a662d28944..ee3f16ae3d 100644 --- a/misc/android/go_android_exec.go +++ b/misc/android/go_android_exec.go @@ -196,12 +196,10 @@ func subdir() (pkgpath string, underGoRoot bool, err error) { if err != nil { return "", false, err } - if strings.HasPrefix(cwd, goroot) { - subdir, err := filepath.Rel(goroot, cwd) - if err != nil { - return "", false, err + if subdir, err := filepath.Rel(goroot, cwd); err == nil { + if !strings.Contains(subdir, "..") { + return subdir, true, nil } - return subdir, true, nil } for _, p := range filepath.SplitList(build.Default.GOPATH) { @@ -209,12 +207,10 @@ func subdir() (pkgpath string, underGoRoot bool, err error) { if err != nil { return "", false, err } - if !strings.HasPrefix(cwd, pabs) { - continue - } - subdir, err := filepath.Rel(pabs, cwd) - if err == nil { - return subdir, false, nil + if subdir, err := filepath.Rel(pabs, cwd); err == nil { + if !strings.Contains(subdir, "..") { + return subdir, false, nil + } } } return "", false, fmt.Errorf("the current path %q is not in either GOROOT(%q) or GOPATH(%q)",