syscallcompat: Use O_PATH to open base directory.
Also remove some unnecessary flags: When O_PATH is specified in flags, flag bits other than O_CLOEXEC, O_DIRECTORY, and O_NOFOLLOW are ignored.
This commit is contained in:
parent
d86f9914ac
commit
927b3ce4cf
|
@ -23,8 +23,7 @@ func OpenDirNofollow(baseDir string, relPath string) (fd int, err error) {
|
||||||
return -1, syscall.EINVAL
|
return -1, syscall.EINVAL
|
||||||
}
|
}
|
||||||
// Open the base dir (following symlinks)
|
// Open the base dir (following symlinks)
|
||||||
// TODO: should this use syscallcompat.O_PATH?
|
dirfd, err := syscall.Open(baseDir, syscall.O_DIRECTORY|O_PATH, 0)
|
||||||
dirfd, err := syscall.Open(baseDir, syscall.O_RDONLY|syscall.O_DIRECTORY, 0)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return -1, err
|
return -1, err
|
||||||
}
|
}
|
||||||
|
@ -37,7 +36,7 @@ func OpenDirNofollow(baseDir string, relPath string) (fd int, err error) {
|
||||||
// Walk the directory tree
|
// Walk the directory tree
|
||||||
var dirfd2 int
|
var dirfd2 int
|
||||||
for _, name := range parts {
|
for _, name := range parts {
|
||||||
dirfd2, err = Openat(dirfd, name, syscall.O_RDONLY|syscall.O_NOFOLLOW|syscall.O_DIRECTORY|O_PATH, 0)
|
dirfd2, err = Openat(dirfd, name, syscall.O_NOFOLLOW|syscall.O_DIRECTORY|O_PATH, 0)
|
||||||
syscall.Close(dirfd)
|
syscall.Close(dirfd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return -1, err
|
return -1, err
|
||||||
|
|
Loading…
Reference in New Issue