From: David du Colombier <0intro@gmail.com> Date: Wed, 18 Dec 2013 23:58:23 +0000 (+0100) Subject: syscall: disallow slashes in file names on Plan 9 X-Git-Tag: go1.3beta1~1152 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=674606503e716dbea89166d2df87e2ec887aa4da;p=gostls13.git syscall: disallow slashes in file names on Plan 9 R=golang-dev, rsc CC=golang-dev https://golang.org/cl/43480050 --- diff --git a/src/pkg/syscall/dir_plan9.go b/src/pkg/syscall/dir_plan9.go index b7ab4cd108..d9fb26b133 100644 --- a/src/pkg/syscall/dir_plan9.go +++ b/src/pkg/syscall/dir_plan9.go @@ -11,6 +11,7 @@ import "errors" var ( ErrShortStat = errors.New("stat buffer too short") ErrBadStat = errors.New("malformed stat buffer") + ErrBadName = errors.New("bad character in file name") ) // A Qid represents a 9P server's unique identification for a file. @@ -65,6 +66,12 @@ func (d *Dir) Marshal(b []byte) (n int, err error) { return n, ErrShortStat } + for _, c := range d.Name { + if c == '/' { + return n, ErrBadName + } + } + b = pbit16(b, uint16(n)-2) b = pbit16(b, d.Type) b = pbit32(b, d.Dev)