diff options
author | Robert Griesemer <gri@golang.org> | 2012-02-21 22:50:00 -0800 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2012-02-21 22:50:00 -0800 |
commit | d74680ea1cf3f1f52098eb293bd7198750f2193f (patch) | |
tree | 00928e8d9229e4534ebd6e6bb7c39cbbd9674309 | |
parent | c2cd0d09c2e784fb818aea47557269a3bac9d8b1 (diff) | |
download | go-d74680ea1cf3f1f52098eb293bd7198750f2193f.tar.gz go-d74680ea1cf3f1f52098eb293bd7198750f2193f.zip |
godoc: fix potential index out-of-bounds error
R=golang-dev, bradfitz, dsymonds
CC=golang-dev
https://golang.org/cl/5683072
-rw-r--r-- | src/cmd/godoc/mapping.go | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/cmd/godoc/mapping.go b/src/cmd/godoc/mapping.go index 1a0da15bfc..544dd6f661 100644 --- a/src/cmd/godoc/mapping.go +++ b/src/cmd/godoc/mapping.go @@ -139,14 +139,16 @@ func (m *Mapping) Fprint(w io.Writer) { } } +const sep = string(filepath.Separator) + // splitFirst splits a path at the first path separator and returns // the path's head (the top-most directory specified by the path) and // its tail (the rest of the path). If there is no path separator, -// splitFirst returns path as head, and the the empty string as tail. +// splitFirst returns path as head, and the empty string as tail. // Specifically, splitFirst("foo") == splitFirst("foo/"). // func splitFirst(path string) (head, tail string) { - if i := strings.Index(path, string(filepath.Separator)); i > 0 { + if i := strings.Index(path, sep); i > 0 { // 0 < i < len(path) return path[0:i], path[i+1:] } @@ -179,7 +181,7 @@ func (m *Mapping) ToAbsolute(spath string) string { func (m *Mapping) ToRelative(fpath string) string { for _, e := range m.list { // if fpath has prefix e.path, the next character must be a separator (was issue 3096) - if strings.HasPrefix(fpath, e.path) && fpath[len(e.path)] == filepath.Separator { + if strings.HasPrefix(fpath, e.path+sep) { spath := filepath.ToSlash(fpath) // /absolute/prefix/foo -> prefix/foo return path.Join(e.prefix, spath[len(e.path):]) // Join will remove a trailing '/' |