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 <bsm/audit.h> 25 26/* 27 * Wrappers for the legacy getaudit() and setaudit() syscalls. 28 */ 29 30int 31getaudit(struct auditinfo *ainfo) 32{ 33 int err; 34 auditinfo_addr_t aia; 35 36 if ((err = getaudit_addr(&aia, sizeof(aia))) != 0) 37 return (err); 38 39 ainfo->ai_auid = aia.ai_auid; 40 ainfo->ai_mask = aia.ai_mask; 41 ainfo->ai_termid.port = aia.ai_termid.at_port; 42 ainfo->ai_termid.machine = aia.ai_termid.at_addr[0]; 43 ainfo->ai_asid = aia.ai_asid; 44 45 return (0); 46} 47 48int 49setaudit(const struct auditinfo *ainfo) 50{ 51 int err; 52 struct auditinfo *ai = (struct auditinfo *)ainfo; 53 auditinfo_addr_t aia; 54 55 /* Get the current ai_flags so they are preserved. */ 56 if ((err = getaudit_addr(&aia, sizeof(aia))) != 0) 57 return (err); 58 59 aia.ai_auid = ai->ai_auid; 60 aia.ai_mask = ai->ai_mask; 61 aia.ai_termid.at_port = ai->ai_termid.port; 62 aia.ai_termid.at_type = AU_IPv4; 63 aia.ai_termid.at_addr[0] = ai->ai_termid.machine; 64 aia.ai_asid = ai->ai_asid; 65 66 if ((err = setaudit_addr(&aia, sizeof(aia))) != 0) 67 return (err); 68 69 /* The session ID may have been assigned by kernel so copy that back. */ 70 ai->ai_asid = aia.ai_asid; 71 72 return (0); 73} 74