other mechanisms are used described in more detail below.
Path processing in Samba typically means processing client supplied paths
- by Samba's core path processing function `filename_convert()' which returs
+ by Samba's core path processing function `filename_convert()' which returns
a pointer to an object of type `struct smb_filename'. Pointers to such
objects are then passed around, often passing many layers of code.
In Samba the decision whether to call POSIX `open()' on a client pathname
or whether to leave the low-level handle at -1 (what we call a stat-open)
- is based on the client requested SMB acccess mask.
+ is based on the client requested SMB access mask.
The set of access rights that trigger an `open()' includes
`READ_CONTROL_ACCESS'. As a result, the open() will be done with at least
system doesn't support `O_PATH' is needed.
The way this is implemented on such systems is impersonating the root user
- for the `open()' syscall. In order to avoid privelege escalations security
+ for the `open()' syscall. In order to avoid privilege escalations security
issues, we must carefully control the use these file-handles.
The low level filehandle is stored in a public struct `struct file_handle'
that is part of the widely used `struct files_struct'. Consumers used to
- simply access the fd directly by derefencing pointers to `struct
+ simply access the fd directly by dereferencing pointers to `struct
files_struct'.
In order to guard access to such file-handles we do two things:
SMB_VFS_BRL_LOCK_WINDOWS() [fsp] -
SMB_VFS_BRL_UNLOCK_WINDOWS() [fsp] -
SMB_VFS_CHDIR() [Path] Todo
- SMB_VFS_CHFLAGS() [Path] Todo
+ SMB_VFS_CHFLAGS() [Path] -
SMB_VFS_CHMOD() [Path] -
SMB_VFS_CLOSE() [fsp] -
SMB_VFS_CLOSEDIR() [fsp] -
SMB_VFS_GET_REAL_FILENAME() [P2px] -
SMB_VFS_GET_SHADOW_COPY_DATA() [fsp] -
SMB_VFS_GETWD() [Special] -
- SMB_VFS_GETXATTR() [Path] Todo
+ SMB_VFS_GETXATTR() [Path] -
SMB_VFS_GETXATTRAT_RECV() [Enum] -
SMB_VFS_GETXATTRAT_SEND() [Enum] -
- SMB_VFS_KERNEL_FLOCK() [fsp] -
+ SMB_VFS_FILESYSTEM_SHAREMODE() [fsp] -
SMB_VFS_LCHOWN() [Path] Todo
SMB_VFS_LINKAT() [NsC] -
SMB_VFS_LINUX_SETLEASE() [fsp] -
SMB_VFS_PREAD_SEND() [fsp] -
SMB_VFS_PWRITE() [fsp] -
SMB_VFS_PWRITE_SEND() [fsp] -
- SMB_VFS_READ_DFS_PATHAT() [Symlink] Todo
+ SMB_VFS_READ_DFS_PATHAT() [Symlink] -
SMB_VFS_READDIR() [fsp] -
SMB_VFS_READDIR_ATTR() [Path] -
SMB_VFS_READLINKAT() [Symlink] -
SMB_VFS_REALPATH() [P2px] -
SMB_VFS_RECVFILE() [fsp] -
SMB_VFS_REMOVEXATTR() [Path] -
- SMB_VFS_RENAMEAT() [Path] Todo
+ SMB_VFS_RENAMEAT() [Path] -
SMB_VFS_REWINDDIR() [fsp] -
- SMB_VFS_SEEKDIR() [fsp] -
SMB_VFS_SENDFILE() [fsp] -
SMB_VFS_SET_COMPRESSION() [fsp] -
SMB_VFS_SET_DOS_ATTRIBUTES() [Path] -
SMB_VFS_SYS_ACL_GET_FD() [xpathref] -
SMB_VFS_SYS_ACL_GET_FILE() [Path] -
SMB_VFS_SYS_ACL_SET_FD() [xpathref] -
- SMB_VFS_TELLDIR() [fsp] -
SMB_VFS_TRANSLATE_NAME() [P2px] -
SMB_VFS_UNLINKAT() [NsC] -
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• SMB_VFS_GETLOCK()
• SMB_VFS_GET_ALLOC_SIZE()
• SMB_VFS_GET_SHADOW_COPY_DATA()
- • SMB_VFS_KERNEL_FLOCK()
+ • SMB_VFS_FILESYSTEM_SHAREMODE()
• SMB_VFS_LINUX_SETLEASE()
• SMB_VFS_LOCK()
• SMB_VFS_LSEEK()
• SMB_VFS_READDIR()
• SMB_VFS_RECVFILE()
• SMB_VFS_REWINDDIR()
- • SMB_VFS_SEEKDIR()
• SMB_VFS_SENDFILE()
• SMB_VFS_SET_COMPRESSION()
• SMB_VFS_STRICT_LOCK_CHECK()
- • SMB_VFS_TELLDIR()
If an fsp is provided by the SMB layer we use that, otherwise we use the
pathref fsp `smb_fname->fsp' provided by `filename_convert()'.
2.2.4 Path based VFS functions
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
- All path based VFS functtions will be replaced by handle based variants
+ All path based VFS functions will be replaced by handle based variants
using the `smb_fname->fsp' provided by `filename_convert()'.
• SMB_VFS_CHDIR()