The branch, master has been updated via 2a2ac63 s3/smbd: set FILE_ATTRIBUTE_DIRECTORY as necessary via 5d4f7bf nfs4acl: Fix owner mapping with ID_TYPE_BOTH via a9a1a16 s3-spoolss: fix winreg_printer_ver_to_qword from e69b17d smbd: Reset O_NONBLOCK on open files
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 2a2ac63975b8ff41ede8e93ef2b33148c89f185f Author: Ralph Boehme <s...@samba.org> Date: Wed Sep 14 12:52:48 2016 +0200 s3/smbd: set FILE_ATTRIBUTE_DIRECTORY as necessary Some VFS modules like GPFS will always return success from SMB_VFS_GET_DOS_ATTRIBUTES() but only set a subset of the attributes. It neither sets FILE_ATTRIBUTE_NORMAL nor FILE_ATTRIBUTE_DIRECTORY. We already handle the case that the VFS stack returns with result==0 and then add the FILE_ATTRIBUTE_NORMAL, regardless of the type of the filesystem object. If we want to handle result==0 situation in the SMB_VFS_GET_DOS_ATTRIBUTES() caller, then do it right by either setting FILE_ATTRIBUTE_NORMAL or FILE_ATTRIBUTE_DIRECTORY. Bug: https://bugzilla.samba.org/show_bug.cgi?id=12261 Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri Sep 16 00:34:43 CEST 2016 on sn-devel-144 commit 5d4f7bfda579cecb123cfb1d7130688f1d1c98b7 Author: Christof Schmitt <c...@samba.org> Date: Mon Sep 12 16:22:16 2016 -0700 nfs4acl: Fix owner mapping with ID_TYPE_BOTH This fixes a corner case when using NFS4 ACLs with ID_TYPE_BOTH. Before this patch, the owner entry in the ACL would be mapped to a gid entry in the NFSv4 ACL, and not the expected special owner entry. This is caused by the id mapping returning a valid gid and the nfs4 mapping assumed that this was actually a group. Fix this by asking for the uid first, and explicitly checking if the mapped uid matches the owner. That creates a uid entry in the NFSv4 ACL that can be changed later in smbacl4_substitute_{simple,special} to the expected special owner entry. Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit a9a1a16cc8b87a84cdfa049ebd26bf4eac1b3618 Author: Günther Deschner <g...@samba.org> Date: Mon Sep 12 17:55:37 2016 +0200 s3-spoolss: fix winreg_printer_ver_to_qword We were reporting the OS minor number as the driver version number in all GetDriver/EnumDriver calls. Guenther Signed-off-by: Guenther Deschner <g...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: source3/modules/nfs4_acls.c | 9 ++++++++- source3/rpc_client/cli_winreg_spoolss.c | 7 ++++--- source3/smbd/dosmode.c | 6 +++++- 3 files changed, 17 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/modules/nfs4_acls.c b/source3/modules/nfs4_acls.c index 71f4d8d..6fe3b11 100644 --- a/source3/modules/nfs4_acls.c +++ b/source3/modules/nfs4_acls.c @@ -715,7 +715,14 @@ static bool smbacl4_fill_ace4( uid_t uid; gid_t gid; - if (sid_to_gid(&ace_nt->trustee, &gid)) { + /* + * ID_TYPE_BOTH returns both uid and gid. Explicitly + * check for ownerUID to allow the mapping of the + * owner to a special entry in this idmap config. + */ + if (sid_to_uid(&ace_nt->trustee, &uid) && uid == ownerUID) { + ace_v4->who.uid = uid; + } else if (sid_to_gid(&ace_nt->trustee, &gid)) { ace_v4->aceFlags |= SMB_ACE4_IDENTIFIER_GROUP; ace_v4->who.gid = gid; } else if (sid_to_uid(&ace_nt->trustee, &uid)) { diff --git a/source3/rpc_client/cli_winreg_spoolss.c b/source3/rpc_client/cli_winreg_spoolss.c index 8014e41..f1df336 100644 --- a/source3/rpc_client/cli_winreg_spoolss.c +++ b/source3/rpc_client/cli_winreg_spoolss.c @@ -529,8 +529,9 @@ static WERROR winreg_printer_write_ver(TALLOC_CTX *mem_ctx, NTSTATUS status; char *str; - /* FIXME: check format is right, - * this needs to be something like: 6.1.7600.16385 */ + /* + * this needs to be something like: 6.1.7600.16385 + */ str = talloc_asprintf(mem_ctx, "%u.%u.%u.%u", (unsigned)((data >> 48) & 0xFFFF), (unsigned)((data >> 32) & 0xFFFF), @@ -574,7 +575,7 @@ static WERROR winreg_printer_ver_to_qword(const char *str, uint64_t *data) *data = ((uint64_t)(v1 & 0xFFFF) << 48) + ((uint64_t)(v2 & 0xFFFF) << 32) + ((uint64_t)(v3 & 0xFFFF) << 16) + - (uint64_t)(v2 & 0xFFFF); + (uint64_t)(v4 & 0xFFFF); return WERR_OK; } diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c index ef880e5..a376cbc 100644 --- a/source3/smbd/dosmode.c +++ b/source3/smbd/dosmode.c @@ -637,7 +637,11 @@ uint32_t dos_mode(connection_struct *conn, struct smb_filename *smb_fname) result |= dos_mode_from_name(conn, smb_fname, result); if (result == 0) { - result = FILE_ATTRIBUTE_NORMAL; + if (S_ISDIR(smb_fname->st.st_ex_mode)) { + result = FILE_ATTRIBUTE_DIRECTORY; + } else { + result = FILE_ATTRIBUTE_NORMAL; + } } result = filter_mode_by_protocol(result); -- Samba Shared Repository