acl_perm.c (75185) | acl_perm.c (75928) |
---|---|
1/* 2 * Copyright (c) 2001 Chris D. Faulhaber 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 * POSSIBILITY OF SUCH DAMAGE. 25 * | 1/* 2 * Copyright (c) 2001 Chris D. Faulhaber 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 * POSSIBILITY OF SUCH DAMAGE. 25 * |
26 * $FreeBSD: head/lib/libc/posix1e/acl_perm.c 75185 2001-04-04 18:00:52Z tmm $ | 26 * $FreeBSD: head/lib/libc/posix1e/acl_perm.c 75928 2001-04-24 22:45:41Z jedgar $ |
27 */ 28 29#include <sys/types.h> 30#include "namespace.h" 31#include <sys/acl.h> 32#include "un-namespace.h" 33 34#include <errno.h> 35#include <string.h> 36 37/* | 27 */ 28 29#include <sys/types.h> 30#include "namespace.h" 31#include <sys/acl.h> 32#include "un-namespace.h" 33 34#include <errno.h> 35#include <string.h> 36 37/* |
38 * acl_add_perm() adds the permission contained in perm to the | 38 * acl_add_perm() (23.4.1): add the permission contained in perm to the |
39 * permission set permset_d 40 */ 41int 42acl_add_perm(acl_permset_t permset_d, acl_perm_t perm) 43{ 44 | 39 * permission set permset_d 40 */ 41int 42acl_add_perm(acl_permset_t permset_d, acl_perm_t perm) 43{ 44 |
45 if (!permset_d || (perm & !(ACL_PERM_BITS))) { 46 errno = EINVAL; 47 return -1; | 45 if (permset_d) { 46 switch(perm) { 47 case ACL_READ: 48 case ACL_WRITE: 49 case ACL_EXECUTE: 50 *permset_d |= perm; 51 return 0; 52 } |
48 } 49 | 53 } 54 |
50 *permset_d |= perm; 51 52 return 0; | 55 errno = EINVAL; 56 return -1; |
53} 54 55/* | 57} 58 59/* |
56 * acl_clear_perms() clears all permisions from the permission | 60 * acl_clear_perms() (23.4.3): clear all permisions from the permission |
57 * set permset_d 58 */ 59int 60acl_clear_perms(acl_permset_t permset_d) 61{ 62 63 if (!permset_d) { 64 errno = EINVAL; 65 return -1; 66 } 67 | 61 * set permset_d 62 */ 63int 64acl_clear_perms(acl_permset_t permset_d) 65{ 66 67 if (!permset_d) { 68 errno = EINVAL; 69 return -1; 70 } 71 |
68 *permset_d = 0; | 72 *permset_d = ACL_PERM_NONE; |
69 70 return 0; 71} 72 73/* | 73 74 return 0; 75} 76 77/* |
74 * acl_delete_perm() removes the permission in perm from the | 78 * acl_delete_perm() (23.4.10): remove the permission in perm from the |
75 * permission set permset_d 76 */ 77int 78acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm) 79{ 80 | 79 * permission set permset_d 80 */ 81int 82acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm) 83{ 84 |
81 if (!permset_d) { 82 errno = EINVAL; 83 return -1; | 85 if (permset_d) { 86 switch(perm) { 87 case ACL_READ: 88 case ACL_WRITE: 89 case ACL_EXECUTE: 90 *permset_d &= ~(perm & ACL_PERM_BITS); 91 return 0; 92 } |
84 } 85 | 93 } 94 |
86 *permset_d &= ~(perm & ACL_PERM_BITS); 87 88 return 0; | 95 errno = EINVAL; 96 return -1; |
89} | 97} |