]> git.saurik.com Git - apple/libc.git/blobdiff - posix1e/acl_entry.c
Libc-1044.40.1.tar.gz
[apple/libc.git] / posix1e / acl_entry.c
index 37cd58bea6160dd4b9b754f0e6b4abc2fdb6d4c3..a690c004b2151644b52b81cec13abdc80d161478 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004, 2011 Apple Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
 
 #include "aclvar.h"
 
+#if __DARWIN_ACL_EXTENDED_ALLOW != KAUTH_ACE_PERMIT
+#  error __DARWIN_ACL_EXTENDED_ALLOW != KAUTH_ACE_PERMIT
+#endif
+#if __DARWIN_ACL_EXTENDED_DENY != KAUTH_ACE_DENY
+#  error __DARWIN_ACL_EXTENDED_DENY != KAUTH_ACE_DENY
+#endif
+
 int
 acl_copy_entry(acl_entry_t dest, acl_entry_t src)
 {
@@ -69,6 +76,7 @@ acl_create_entry_np(acl_t *acl_p, acl_entry_t *entry_p, int index)
        ap->a_entries++;
 
        /* initialise new entry */
+       memset(&ap->a_ace[index], 0, sizeof(ap->a_ace[index]));
        ap->a_ace[index].ae_magic = _ACL_ENTRY_MAGIC;
        ap->a_ace[index].ae_tag = ACL_UNDEFINED_TAG;
 
@@ -176,22 +184,21 @@ int
 acl_set_qualifier(acl_entry_t entry, const void *tag_qualifier_p)
 {
        acl_tag_t       tag_type;
-       int             error;
 
        _ACL_VALIDATE_ENTRY(entry);
-       if ((error = acl_get_tag_type(entry, &tag_type)) != 0)
-               return(error);
+       if (acl_get_tag_type(entry, &tag_type) != 0)
+               return(-1);
 
        switch(tag_type) {
        case ACL_EXTENDED_ALLOW:
        case ACL_EXTENDED_DENY:
                bcopy(tag_qualifier_p, &entry->ae_applicable, sizeof(guid_t));
-               error = 0;
                break;
        default:
-               error = EINVAL;
+               errno = EINVAL;
+               return(-1);
        }
-       return(error);
+       return(0);
 }
 
 int
@@ -205,7 +212,8 @@ acl_set_tag_type(acl_entry_t entry, acl_tag_t tag_type)
                entry->ae_tag = tag_type;
                break;
        default:
-               return(EINVAL);
+               errno = EINVAL;
+               return(-1);
        }
        return(0);
 }