[SCM] Samba Shared Repository - branch v4-4-test updated
Karolin Seeger
kseeger at samba.org
Thu Dec 15 11:22:03 UTC 2016
The branch, v4-4-test has been updated
via 42d2d38 s3: ntlm_auth: Don't corrupt the output stream with debug messages.
via 29e228c lib: security: se_access_check() incorrectly processes owner rights (S-1-3-4) DENY ace entries
via 3873681 s3: smbd: Add missing permissions check on destination folder.
via 6c28575 s3: smbd: Make check_parent_access() available to rename code.
via 3c2cc97 s3: smbd: rename - missing early error exit if source and destination prefixes are different.
from 764444d manpages/vfs_fruit: add warning to fruit:resoure=stream
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-4-test
- Log -----------------------------------------------------------------
commit 42d2d3844564c152ae21b6e8cabaa99dbf019c36
Author: Jeremy Allison <jra at samba.org>
Date: Sat Dec 10 13:56:18 2016 -0800
s3: ntlm_auth: Don't corrupt the output stream with debug messages.
Calling programs expect to cleanly read from STDOUT.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12467
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
Reviewed-by: Volker Lendecke <vl at samba.org>
(cherry picked from commit 9fbd544b90c2b27985637a9bb3fa520f891f8696)
Autobuild-User(v4-4-test): Karolin Seeger <kseeger at samba.org>
Autobuild-Date(v4-4-test): Thu Dec 15 12:21:27 CET 2016 on sn-devel-144
commit 29e228cfe55a0dfd391b7cd7d63b4dcf3faf71cc
Author: Jeremy Allison <jra at samba.org>
Date: Thu Dec 8 10:40:18 2016 -0800
lib: security: se_access_check() incorrectly processes owner rights (S-1-3-4) DENY ace entries
Reported and proposed fix by Shilpa K <shilpa.krishnareddy at gmail.com>.
When processing DENY ACE entries for owner rights SIDs (S-1-3-4) the
code OR's in the deny access mask bits without taking into account if
they were being requested in the requested access mask.
E.g. The current logic has:
An ACL containining:
[0] SID: S-1-3-4
TYPE: DENY
MASK: WRITE_DATA
[1] SID: S-1-3-4
TYPE: ALLOW
MASK: ALLOW_ALL
prohibits an open request by the owner for READ_DATA - even though this
is explicitly allowed.
Furthermore a non-canonical ACL containing:
[0] SID: User SID 1-5-21-something
TYPE: ALLOW
MASK: READ_DATA
[1] SID: S-1-3-4
TYPE: DENY
MASK: READ_DATA
[2] SID: User SID 1-5-21-something
TYPE: ALLOW
MASK: WRITE_DATA
prohibits an open request by the owner for READ_DATA|WRITE_DATA - even
though READ_DATA is explicitly allowed in ACE no 0 and is thus already
filtered out of the "access-still-needed" mask when the deny ACE no 1 is
evaluated.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12466
Signed-off-by: Jeremy Allison <jra at samba.org>
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
(cherry picked from commit 29b02cf22f3c0f2d556408e9e768d68c1efc3b96)
commit 387368180913af6acdb0911a94123ac0c960cb17
Author: Jeremy Allison <jra at samba.org>
Date: Mon Dec 5 14:32:55 2016 -0800
s3: smbd: Add missing permissions check on destination folder.
Based on code from Michael Zeis <mzeis.quantum at gmail.com>.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12460
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
(cherry picked from commit 91b591224ab7f8ea7b4594da9f61efef14353f7f)
commit 6c28575b57be6367f6d5f1ce159c7e21d7f23397
Author: Jeremy Allison <jra at samba.org>
Date: Mon Dec 5 14:32:03 2016 -0800
s3: smbd: Make check_parent_access() available to rename code.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12460
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
(cherry picked from commit beb8a73e95e768565760f79c2a16586bafb4e58c)
commit 3c2cc979822c823c5fe720ab93ccf89ffa37bf28
Author: Jeremy Allison <jra at samba.org>
Date: Mon Dec 5 14:13:14 2016 -0800
s3: smbd: rename - missing early error exit if source and destination prefixes are different.
Noticed by Michael Zeis <mzeis.quantum at gmail.com>.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12460
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
(cherry picked from commit 2bfad1c9d3237ad8d174b7dc2d1e6e3c53fdb8dc)
-----------------------------------------------------------------------
Summary of changes:
libcli/security/access_check.c | 2 +-
source3/smbd/open.c | 2 +-
source3/smbd/proto.h | 3 +++
source3/smbd/reply.c | 18 ++++++++++++++++++
source3/utils/ntlm_auth.c | 6 +++---
5 files changed, 26 insertions(+), 5 deletions(-)
Changeset truncated at 500 lines:
diff --git a/libcli/security/access_check.c b/libcli/security/access_check.c
index 2be5928..b4c850b 100644
--- a/libcli/security/access_check.c
+++ b/libcli/security/access_check.c
@@ -220,7 +220,7 @@ NTSTATUS se_access_check(const struct security_descriptor *sd,
owner_rights_allowed |= ace->access_mask;
owner_rights_default = false;
} else if (ace->type == SEC_ACE_TYPE_ACCESS_DENIED) {
- owner_rights_denied |= ace->access_mask;
+ owner_rights_denied |= (bits_remaining & ace->access_mask);
owner_rights_default = false;
}
continue;
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 90155bd..ced3bb0 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -235,7 +235,7 @@ NTSTATUS smbd_check_access_rights(struct connection_struct *conn,
return NT_STATUS_OK;
}
-static NTSTATUS check_parent_access(struct connection_struct *conn,
+NTSTATUS check_parent_access(struct connection_struct *conn,
struct smb_filename *smb_fname,
uint32_t access_mask)
{
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index ca8ea57..4ba7316 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -615,6 +615,9 @@ NTSTATUS smbd_check_access_rights(struct connection_struct *conn,
const struct smb_filename *smb_fname,
bool use_privs,
uint32_t access_mask);
+NTSTATUS check_parent_access(struct connection_struct *conn,
+ struct smb_filename *smb_fname,
+ uint32_t access_mask);
NTSTATUS fd_open(struct connection_struct *conn, files_struct *fsp,
int flags, mode_t mode);
NTSTATUS fd_close(files_struct *fsp);
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index 6b16458..3ba61a3 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -6589,6 +6589,7 @@ NTSTATUS rename_internals_fsp(connection_struct *conn,
struct smb_filename *smb_fname_dst = NULL;
NTSTATUS status = NT_STATUS_OK;
struct share_mode_lock *lck = NULL;
+ uint32_t access_mask = SEC_DIR_ADD_FILE;
bool dst_exists, old_is_stream, new_is_stream;
status = check_name(conn, smb_fname_dst_in->base_name);
@@ -6769,6 +6770,23 @@ NTSTATUS rename_internals_fsp(connection_struct *conn,
if (rename_path_prefix_equal(fsp->fsp_name, smb_fname_dst)) {
status = NT_STATUS_ACCESS_DENIED;
+ goto out;
+ }
+
+ /* Do we have rights to move into the destination ? */
+ if (S_ISDIR(fsp->fsp_name->st.st_ex_mode)) {
+ /* We're moving a directory. */
+ access_mask = SEC_DIR_ADD_SUBDIR;
+ }
+ status = check_parent_access(conn,
+ smb_fname_dst,
+ access_mask);
+ if (!NT_STATUS_IS_OK(status)) {
+ DBG_INFO("check_parent_access on "
+ "dst %s returned %s\n",
+ smb_fname_str_dbg(smb_fname_dst),
+ nt_errstr(status));
+ goto out;
}
lck = get_existing_share_mode_lock(talloc_tos(), fsp->file_id);
diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c
index b65493b..653be45 100644
--- a/source3/utils/ntlm_auth.c
+++ b/source3/utils/ntlm_auth.c
@@ -291,7 +291,7 @@ static char winbind_separator(void)
if (winbindd_request_response(NULL, WINBINDD_INFO, NULL, &response) !=
NSS_STATUS_SUCCESS) {
- d_printf("could not obtain winbind separator!\n");
+ d_fprintf(stderr, "could not obtain winbind separator!\n");
return *lp_winbind_separator();
}
@@ -299,7 +299,7 @@ static char winbind_separator(void)
got_sep = True;
if (!sep) {
- d_printf("winbind separator was NULL!\n");
+ d_fprintf(stderr, "winbind separator was NULL!\n");
return *lp_winbind_separator();
}
@@ -493,7 +493,7 @@ static bool check_plaintext_auth(const char *user, const char *pass,
if (stdout_diagnostics) {
if ((result != NSS_STATUS_SUCCESS) && (response.data.auth.nt_status == 0)) {
- d_printf("Reading winbind reply failed! (0x01)\n");
+ d_fprintf(stderr, "Reading winbind reply failed! (0x01)\n");
}
d_printf("%s: %s (0x%x)\n",
--
Samba Shared Repository
More information about the samba-cvs
mailing list