mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
vfs_gpfs: Implement CAP_DAC_OVERRIDE for fstatat
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15507 Signed-off-by: Christof Schmitt <cs@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org> Autobuild-User(master): Ralph Böhme <slow@samba.org> Autobuild-Date(master): Wed Nov 8 18:42:13 UTC 2023 on atb-devel-224
This commit is contained in:
parent
cbdc16a7cf
commit
963fc353e7
@ -1702,6 +1702,31 @@ static int vfs_gpfs_lstat(struct vfs_handle_struct *handle,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int vfs_gpfs_fstatat(struct vfs_handle_struct *handle,
|
||||||
|
const struct files_struct *dirfsp,
|
||||||
|
const struct smb_filename *smb_fname,
|
||||||
|
SMB_STRUCT_STAT *sbuf,
|
||||||
|
int flags)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = SMB_VFS_NEXT_FSTATAT(handle, dirfsp, smb_fname, sbuf, flags);
|
||||||
|
if (ret == -1 && errno == EACCES) {
|
||||||
|
bool fake_dctime =
|
||||||
|
lp_fake_directory_create_times(SNUM(handle->conn));
|
||||||
|
|
||||||
|
DBG_DEBUG("fstatat for %s failed with EACCES. Trying with "
|
||||||
|
"CAP_DAC_OVERRIDE.\n", dirfsp->fsp_name->base_name);
|
||||||
|
ret = fstatat_with_cap_dac_override(fsp_get_pathref_fd(dirfsp),
|
||||||
|
smb_fname->base_name,
|
||||||
|
sbuf,
|
||||||
|
flags,
|
||||||
|
fake_dctime);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int timespec_to_gpfs_time(
|
static int timespec_to_gpfs_time(
|
||||||
struct timespec ts, gpfs_timestruc_t *gt, int idx, int *flags)
|
struct timespec ts, gpfs_timestruc_t *gt, int idx, int *flags)
|
||||||
{
|
{
|
||||||
@ -2637,6 +2662,7 @@ static struct vfs_fn_pointers vfs_gpfs_fns = {
|
|||||||
.stat_fn = vfs_gpfs_stat,
|
.stat_fn = vfs_gpfs_stat,
|
||||||
.fstat_fn = vfs_gpfs_fstat,
|
.fstat_fn = vfs_gpfs_fstat,
|
||||||
.lstat_fn = vfs_gpfs_lstat,
|
.lstat_fn = vfs_gpfs_lstat,
|
||||||
|
.fstatat_fn = vfs_gpfs_fstatat,
|
||||||
.fntimes_fn = vfs_gpfs_fntimes,
|
.fntimes_fn = vfs_gpfs_fntimes,
|
||||||
.aio_force_fn = vfs_gpfs_aio_force,
|
.aio_force_fn = vfs_gpfs_aio_force,
|
||||||
.sendfile_fn = vfs_gpfs_sendfile,
|
.sendfile_fn = vfs_gpfs_sendfile,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user