diff options
Diffstat (limited to 'source3/modules/vfs_acl_xattr.c')
-rw-r--r-- | source3/modules/vfs_acl_xattr.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/source3/modules/vfs_acl_xattr.c b/source3/modules/vfs_acl_xattr.c index 31ffe34064..ff0c2cbc89 100644 --- a/source3/modules/vfs_acl_xattr.c +++ b/source3/modules/vfs_acl_xattr.c @@ -18,6 +18,8 @@ * along with this program; if not, see <http://www.gnu.org/licenses/>. */ +/* NOTE: This is an experimental module, not yet finished. JRA. */ + #include "includes.h" #include "librpc/gen_ndr/xattr.h" #include "librpc/gen_ndr/ndr_xattr.h" @@ -77,8 +79,8 @@ static NTSTATUS parse_acl_blob(const DATA_BLOB *pblob, return (*ppdesc != NULL) ? NT_STATUS_OK : NT_STATUS_NO_MEMORY; } -static NTSTATUS get_acl_blob(vfs_handle_struct *handle, - TALLOC_CTX *ctx, +static NTSTATUS get_acl_blob(TALLOC_CTX *ctx, + vfs_handle_struct *handle, files_struct *fsp, const char *name, DATA_BLOB *pblob) @@ -223,10 +225,14 @@ static NTSTATUS get_nt_acl_xattr(vfs_handle_struct *handle, static NTSTATUS create_acl_blob(SEC_DESC *psd, DATA_BLOB *pblob) { struct xattr_NTACL xacl; + struct security_descriptor_timestamp sd_ts; enum ndr_err_code ndr_err; TALLOC_CTX *ctx = talloc_tos(); struct timespec curr = timespec_current(); + ZERO_STRUCT(xacl); + ZERO_STRUCT(sd_ts); + /* Horrid hack as setting an xattr changes the ctime * on Linux. This gives a race of 1 second during * which we would not see a POSIX ACL set. @@ -234,6 +240,7 @@ static NTSTATUS create_acl_blob(SEC_DESC *psd, DATA_BLOB *pblob) curr.tv_sec += 1; xacl.version = 2; + xacl.info.sd_ts = &sd_ts; xacl.info.sd_ts->sd = psd; unix_timespec_to_nt_time(&xacl.info.sd_ts->last_changed, curr); |