1/* 2 * Copyright (c) 2011 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24#include <sys/param.h> 25#include <bsm/audit.h> 26 27/* 28 * Wrappers for the legacy getaudit() and setaudit() syscalls. 29 */ 30 31int 32getaudit(struct auditinfo *ainfo) 33{ 34 int err; 35 auditinfo_addr_t aia; 36 37 if ((err = getaudit_addr(&aia, sizeof(aia))) != 0) 38 return (err); 39 40 ainfo->ai_auid = aia.ai_auid; 41 ainfo->ai_mask = aia.ai_mask; 42 ainfo->ai_termid.port = aia.ai_termid.at_port; 43 ainfo->ai_termid.machine = aia.ai_termid.at_addr[0]; 44 ainfo->ai_asid = aia.ai_asid; 45 46 return (0); 47} 48 49int 50setaudit(const struct auditinfo *ainfo) 51{ 52 int err; 53 struct auditinfo *ai = (struct auditinfo *)ainfo; 54 auditinfo_addr_t aia; 55 56 /* Get the current ai_flags so they are preserved. */ 57 if ((err = getaudit_addr(&aia, sizeof(aia))) != 0) 58 return (err); 59 60 aia.ai_auid = ai->ai_auid; 61 aia.ai_mask = ai->ai_mask; 62 aia.ai_termid.at_port = ai->ai_termid.port; 63 aia.ai_termid.at_type = AU_IPv4; 64 aia.ai_termid.at_addr[0] = ai->ai_termid.machine; 65 aia.ai_asid = ai->ai_asid; 66 67 if ((err = setaudit_addr(&aia, sizeof(aia))) != 0) 68 return (err); 69 70 /* The session ID may have been assigned by kernel so copy that back. */ 71 ai->ai_asid = aia.ai_asid; 72 73 return (0); 74} 75