[PATCH] ntvfs: support setfileinfo with FULL_EA_INFORMATION

David Disseldorp ddiss at samba.org
Wed Apr 3 06:01:00 MDT 2013


Use existing unmarshall and set helper functions. This allows the
smb2.setinfo.setinfo test to run against the ntvfs file server.
---
 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 e4b4694..61a0a0e 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 3c9b18d..7fd4e35 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 c0077c0..a3e1123 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);
 
-- 
1.8.1.4



More information about the samba-technical mailing list