diff options
| author | Jakob Unterwurzacher | 2018-11-04 21:29:17 +0100 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2019-01-01 16:24:25 +0100 | 
| commit | de3a2c189578f7636c39fde44fbe1da9c78b367e (patch) | |
| tree | 7d7aab2a7074a51b1a7832560741a9eced72c63c /internal/nametransform | |
| parent | 8586a8382561e3bcac65f4bfd0ef0694e6e11245 (diff) | |
fusefrontend: mark a few more functions as symlink-safe / unsafe
Diffstat (limited to 'internal/nametransform')
| -rw-r--r-- | internal/nametransform/longnames.go | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/internal/nametransform/longnames.go b/internal/nametransform/longnames.go index 9c8637e..6788ce6 100644 --- a/internal/nametransform/longnames.go +++ b/internal/nametransform/longnames.go @@ -24,6 +24,8 @@ const (  // HashLongName - take the hash of a long string "name" and return  // "gocryptfs.longname.[sha256]" +// +// This function does not do any I/O.  func (n *NameTransform) HashLongName(name string) string {  	hashBin := sha256.Sum256([]byte(name))  	hashBase64 := n.B64.EncodeToString(hashBin[:]) @@ -47,6 +49,8 @@ const (  // gocryptfs.longname.[sha256]  ........ LongNameContent (content of a long name file)  // gocryptfs.longname.[sha256].name .... LongNameFilename (full file name of a long name file)  // else ................................ LongNameNone (normal file) +// +// This function does not do any I/O.  func NameType(cName string) int {  	if !strings.HasPrefix(cName, longNamePrefix) {  		return LongNameNone @@ -59,11 +63,15 @@ func NameType(cName string) int {  // IsLongContent returns true if "cName" is the content store of a long name  // file (looks like "gocryptfs.longname.[sha256]"). +// +// This function does not do any I/O.  func IsLongContent(cName string) bool {  	return NameType(cName) == LongNameContent  } -// ReadLongName - read "$path.name" +// ReadLongName - read cName + ".name" from the directory opened as dirfd. +// +// Symlink-safe through Openat().  func ReadLongNameAt(dirfd int, cName string) (string, error) {  	cName += LongNameSuffix  	fd, err := syscallcompat.Openat(dirfd, cName, syscall.O_NOFOLLOW, 0) | 
