aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2009-04-09 22:49:24 -0700
committerWayne Davison <wayned@samba.org>2009-04-09 22:49:24 -0700
commit5eb8bd4962a159c52bacb65bee86f20d1075beec (patch)
treebadc8a71ebcfd273c666e3a47ad4d2ec41a690f6
parente129500c859646cb4685ad35404be0ff4ba668fd (diff)
downloadandroid_external_rsync-5eb8bd4962a159c52bacb65bee86f20d1075beec.tar.gz
android_external_rsync-5eb8bd4962a159c52bacb65bee86f20d1075beec.tar.bz2
android_external_rsync-5eb8bd4962a159c52bacb65bee86f20d1075beec.zip
Don't try to simplify an ACL that has a mask w/o any named values.
-rw-r--r--acls.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/acls.c b/acls.c
index 6e0f6013..dc80dce3 100644
--- a/acls.c
+++ b/acls.c
@@ -137,7 +137,8 @@ static void rsync_acl_strip_perms(rsync_acl *racl)
else {
if (racl->group_obj == racl->mask_obj)
racl->group_obj = NO_ENTRY;
- racl->mask_obj = NO_ENTRY;
+ if (racl->names.count != 0)
+ racl->mask_obj = NO_ENTRY;
}
racl->other_obj = NO_ENTRY;
}
@@ -749,14 +750,7 @@ static int recv_rsync_acl(item_list *racl_list, SMB_ACL_TYPE_T type, int f)
/* If we received a superfluous mask, throw it away. */
duo_item->racl.mask_obj = NO_ENTRY;
#else
- if (!duo_item->racl.names.count) {
- /* If we received a superfluous mask, throw it away. */
- if (duo_item->racl.mask_obj != NO_ENTRY) {
- /* Mask off the group perms with it first. */
- duo_item->racl.group_obj &= duo_item->racl.mask_obj | NO_ENTRY;
- duo_item->racl.mask_obj = NO_ENTRY;
- }
- } else if (duo_item->racl.mask_obj == NO_ENTRY) /* Must be non-empty with lists. */
+ if (duo_item->racl.names.count && duo_item->racl.mask_obj == NO_ENTRY) /* Must be non-empty with lists. */
duo_item->racl.mask_obj = (computed_mask_bits | duo_item->racl.group_obj) & ~NO_ENTRY;
#endif