From ed76e65172ba1a21ef21b3c0267ed5ef1aa8aa9b Mon Sep 17 00:00:00 2001 From: David Disseldorp Date: Wed, 3 Apr 2013 14:01:00 +0200 Subject: [PATCH] ntvfs: support setfileinfo with FULL_EA_INFORMATION Use existing unmarshall and set helper functions. This allows the smb2.setinfo.setinfo test to run against the ntvfs file server. Reviewed-by: Stefan Metzmacher Autobuild-User(master): Stefan Metzmacher Autobuild-Date(master): Wed Apr 3 16:14:33 CEST 2013 on sn-devel-104 --- selftest/knownfail | 1 - source4/ntvfs/posix/pvfs_setfileinfo.c | 7 ++++++- source4/smb_server/blob.c | 6 ++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/selftest/knownfail b/selftest/knownfail index e4b4694db3..61a0a0ed24 100644 --- a/selftest/knownfail +++ b/selftest/knownfail @@ -162,7 +162,6 @@ ^samba4.blackbox.upgradeprovision.alpha13.ldapcmp_sd\(none\) # Due to something rewriting the NT ACL on DNS objects ^samba4.blackbox.upgradeprovision.alpha13.ldapcmp_full_sd\(none\) # Due to something rewriting the NT ACL on DNS objects ^samba4.blackbox.upgradeprovision.release-4-0-0.ldapcmp_sd\(none\) # Due to something rewriting the NT ACL on DNS objects -^samba4.smb2.setinfo.setinfo # ntvfs doesn't support FULL_EA_INFORMATION set. ^samba3.smb2.create.gentest ^samba3.smb2.create.blob ^samba3.smb2.create.open diff --git a/source4/ntvfs/posix/pvfs_setfileinfo.c b/source4/ntvfs/posix/pvfs_setfileinfo.c index 3c9b18d91c..7fd4e35d4f 100644 --- a/source4/ntvfs/posix/pvfs_setfileinfo.c +++ b/source4/ntvfs/posix/pvfs_setfileinfo.c @@ -367,7 +367,7 @@ NTSTATUS pvfs_setfileinfo(struct ntvfs_module_context *ntvfs, break; case RAW_SFILEINFO_EA_SET: - return pvfs_setfileinfo_ea_set(pvfs, h->name, h->fd, + return pvfs_setfileinfo_ea_set(pvfs, h->name, h->fd, info->ea_set.in.num_eas, info->ea_set.in.eas); @@ -420,6 +420,11 @@ NTSTATUS pvfs_setfileinfo(struct ntvfs_module_context *ntvfs, h->position = info->position_information.in.position; break; + case RAW_SFILEINFO_FULL_EA_INFORMATION: + return pvfs_setfileinfo_ea_set(pvfs, h->name, h->fd, + info->full_ea_information.in.eas.num_eas, + info->full_ea_information.in.eas.eas); + case RAW_SFILEINFO_MODE_INFORMATION: /* this one is a puzzle */ if (info->mode_information.in.mode != 0 && diff --git a/source4/smb_server/blob.c b/source4/smb_server/blob.c index c0077c01c9..a3e11239b1 100644 --- a/source4/smb_server/blob.c +++ b/source4/smb_server/blob.c @@ -625,6 +625,12 @@ NTSTATUS smbsrv_pull_passthru_sfileinfo(TALLOC_CTX *mem_ctx, return NT_STATUS_OK; + case RAW_SFILEINFO_FULL_EA_INFORMATION: + return ea_pull_list_chained(blob, + mem_ctx, + &st->full_ea_information.in.eas.num_eas, + &st->full_ea_information.in.eas.eas); + case RAW_SFILEINFO_MODE_INFORMATION: BLOB_CHECK_MIN_SIZE(blob, 4); -- 2.34.1