1*d915a14eSPedro F. Giffuni /*- 2*d915a14eSPedro F. Giffuni * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3*d915a14eSPedro F. Giffuni * 4e76872c1SChris D. Faulhaber * Copyright (c) 2001-2002 Chris D. Faulhaber 54bf60dfaSChris D. Faulhaber * All rights reserved. 64bf60dfaSChris D. Faulhaber * 74bf60dfaSChris D. Faulhaber * Redistribution and use in source and binary forms, with or without 84bf60dfaSChris D. Faulhaber * modification, are permitted provided that the following conditions 94bf60dfaSChris D. Faulhaber * are met: 104bf60dfaSChris D. Faulhaber * 1. Redistributions of source code must retain the above copyright 114bf60dfaSChris D. Faulhaber * notice, this list of conditions and the following disclaimer. 124bf60dfaSChris D. Faulhaber * 2. Redistributions in binary form must reproduce the above copyright 134bf60dfaSChris D. Faulhaber * notice, this list of conditions and the following disclaimer in the 144bf60dfaSChris D. Faulhaber * documentation and/or other materials provided with the distribution. 154bf60dfaSChris D. Faulhaber * 164bf60dfaSChris D. Faulhaber * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 174bf60dfaSChris D. Faulhaber * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 184bf60dfaSChris D. Faulhaber * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1968b23992SWarner Losh * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE 2068b23992SWarner Losh * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2168b23992SWarner Losh * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2268b23992SWarner Losh * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2368b23992SWarner Losh * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2468b23992SWarner Losh * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2568b23992SWarner Losh * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2668b23992SWarner Losh * SUCH DAMAGE. 274bf60dfaSChris D. Faulhaber */ 284bf60dfaSChris D. Faulhaber 29333fc21eSDavid E. O'Brien #include <sys/cdefs.h> 30333fc21eSDavid E. O'Brien __FBSDID("$FreeBSD$"); 31333fc21eSDavid E. O'Brien 324bf60dfaSChris D. Faulhaber #include <sys/types.h> 337bd44e92SThomas Moestl #include "namespace.h" 344bf60dfaSChris D. Faulhaber #include <sys/acl.h> 357bd44e92SThomas Moestl #include "un-namespace.h" 364bf60dfaSChris D. Faulhaber 374bf60dfaSChris D. Faulhaber #include <errno.h> 384bf60dfaSChris D. Faulhaber #include <string.h> 394bf60dfaSChris D. Faulhaber 40aa015c8eSEdward Tomasz Napierala #include "acl_support.h" 41aa015c8eSEdward Tomasz Napierala 424bf60dfaSChris D. Faulhaber /* 430f626307SChris D. Faulhaber * acl_copy_entry() (23.4.4): copy the contents of ACL entry src_d to 444bf60dfaSChris D. Faulhaber * ACL entry dest_d 454bf60dfaSChris D. Faulhaber */ 464bf60dfaSChris D. Faulhaber int 474bf60dfaSChris D. Faulhaber acl_copy_entry(acl_entry_t dest_d, acl_entry_t src_d) 484bf60dfaSChris D. Faulhaber { 494bf60dfaSChris D. Faulhaber 50e76872c1SChris D. Faulhaber if (src_d == NULL || dest_d == NULL || src_d == dest_d) { 514bf60dfaSChris D. Faulhaber errno = EINVAL; 52e76872c1SChris D. Faulhaber return (-1); 534bf60dfaSChris D. Faulhaber } 544bf60dfaSChris D. Faulhaber 55aa015c8eSEdward Tomasz Napierala /* 56aa015c8eSEdward Tomasz Napierala * Can we brand the new entry the same as the source entry? 57aa015c8eSEdward Tomasz Napierala */ 58aa015c8eSEdward Tomasz Napierala if (!_entry_brand_may_be(dest_d, _entry_brand(src_d))) { 59aa015c8eSEdward Tomasz Napierala errno = EINVAL; 60aa015c8eSEdward Tomasz Napierala return (-1); 61aa015c8eSEdward Tomasz Napierala } 62aa015c8eSEdward Tomasz Napierala 63aa015c8eSEdward Tomasz Napierala _entry_brand_as(dest_d, _entry_brand(src_d)); 64aa015c8eSEdward Tomasz Napierala 654bf60dfaSChris D. Faulhaber dest_d->ae_tag = src_d->ae_tag; 664bf60dfaSChris D. Faulhaber dest_d->ae_id = src_d->ae_id; 674bf60dfaSChris D. Faulhaber dest_d->ae_perm = src_d->ae_perm; 68aa015c8eSEdward Tomasz Napierala dest_d->ae_entry_type = src_d->ae_entry_type; 69aa015c8eSEdward Tomasz Napierala dest_d->ae_flags = src_d->ae_flags; 704bf60dfaSChris D. Faulhaber 71e76872c1SChris D. Faulhaber return (0); 724bf60dfaSChris D. Faulhaber } 734bf60dfaSChris D. Faulhaber 744bf60dfaSChris D. Faulhaber ssize_t 754bf60dfaSChris D. Faulhaber acl_copy_ext(void *buf_p, acl_t acl, ssize_t size) 764bf60dfaSChris D. Faulhaber { 774bf60dfaSChris D. Faulhaber 784bf60dfaSChris D. Faulhaber errno = ENOSYS; 79e76872c1SChris D. Faulhaber return (-1); 804bf60dfaSChris D. Faulhaber } 814bf60dfaSChris D. Faulhaber 824bf60dfaSChris D. Faulhaber acl_t 834bf60dfaSChris D. Faulhaber acl_copy_int(const void *buf_p) 844bf60dfaSChris D. Faulhaber { 854bf60dfaSChris D. Faulhaber 864bf60dfaSChris D. Faulhaber errno = ENOSYS; 87e76872c1SChris D. Faulhaber return (NULL); 884bf60dfaSChris D. Faulhaber } 89