diff options
author | Volker Lendecke <vl@samba.org> | 2022-06-03 15:53:29 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2022-08-06 01:43:50 +0000 |
commit | 5fc016f26852a1cc1d7809919ff00cc0404e23e3 (patch) | |
tree | db391ac330045c54731107c5452be14dd1e38fb0 /source3/modules/vfs_full_audit.c | |
parent | 5aaf38949aba3176f43719c4c0ec29ae1398f962 (diff) | |
download | samba-5fc016f26852a1cc1d7809919ff00cc0404e23e3.tar.gz |
vfs: change openat propotype to match linux openat2
The Linux prototype for openat2 looks like this:
long openat2(int dirfd, const char *pathname,
struct open_how *how, size_t size);
where "struct open_how" is defined in "linux/openat2.h". It is
designed to be extensible with further flags.
The "size" parameter is required because there is no type checking
between userland and kernelspace, so the way for Linux to find which
version of open_how is being passed in is looking at the size:
"open_how" is expected to only every grow with additional fields,
should a change be necessary in the future.
Samba does not have this problem, we can typecheck the struct and
pointers, we expect all VFS modules to be compiled against the current
vfs.h.
For now this adds no functionality, but it will make further patches
much smaller.
Pair-programmed-with: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Volker Lendecke <vl@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3/modules/vfs_full_audit.c')
-rw-r--r-- | source3/modules/vfs_full_audit.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c index 6d38738ac52..25fd0cad326 100644 --- a/source3/modules/vfs_full_audit.c +++ b/source3/modules/vfs_full_audit.c @@ -1112,15 +1112,14 @@ static int smb_full_audit_openat(vfs_handle_struct *handle, const struct files_struct *dirfsp, const struct smb_filename *smb_fname, struct files_struct *fsp, - int flags, - mode_t mode) + const struct vfs_open_how *how) { int result; - result = SMB_VFS_NEXT_OPENAT(handle, dirfsp, smb_fname, fsp, flags, mode); + result = SMB_VFS_NEXT_OPENAT(handle, dirfsp, smb_fname, fsp, how); do_log(SMB_VFS_OP_OPENAT, (result >= 0), handle, "%s|%s", - ((flags & O_WRONLY) || (flags & O_RDWR))?"w":"r", + ((how->flags & O_WRONLY) || (how->flags & O_RDWR))?"w":"r", fsp_str_do_log(fsp)); return result; |