Deleted Added
full compact
audit.c (185573) audit.c (186647)
1/*-
2 * Copyright (c) 2005-2008 Apple Inc.
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 *

--- 12 unchanged lines hidden (view full) ---

21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 *
1/*-
2 * Copyright (c) 2005-2008 Apple Inc.
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 *

--- 12 unchanged lines hidden (view full) ---

21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 *
29 * $P4: //depot/projects/trustedbsd/openbsm/bin/audit/audit.c#11 $
29 * $P4: //depot/projects/trustedbsd/openbsm/bin/audit/audit.c#13 $
30 */
31/*
32 * Program to trigger the audit daemon with a message that is either:
33 * - Open a new audit log file
34 * - Read the audit control file and take action on it
35 * - Close the audit log file and exit
36 *
37 */

--- 4 unchanged lines hidden (view full) ---

42#include <sys/queue.h>
43#else /* !HAVE_FULL_QUEUE_H */
44#include <compat/queue.h>
45#endif /* !HAVE_FULL_QUEUE_H */
46#include <sys/uio.h>
47
48#include <bsm/libbsm.h>
49
30 */
31/*
32 * Program to trigger the audit daemon with a message that is either:
33 * - Open a new audit log file
34 * - Read the audit control file and take action on it
35 * - Close the audit log file and exit
36 *
37 */

--- 4 unchanged lines hidden (view full) ---

42#include <sys/queue.h>
43#else /* !HAVE_FULL_QUEUE_H */
44#include <compat/queue.h>
45#endif /* !HAVE_FULL_QUEUE_H */
46#include <sys/uio.h>
47
48#include <bsm/libbsm.h>
49
50#include <errno.h>
50#include <fcntl.h>
51#include <stdio.h>
52#include <stdlib.h>
53#include <unistd.h>
54
55
56static int send_trigger(unsigned int);
57
58#ifdef USE_MACH_IPC
59#include <mach/mach.h>
60#include <servers/netname.h>
61#include <mach/message.h>
62#include <mach/port.h>
63#include <mach/mach_error.h>
64#include <mach/host_special_ports.h>
65#include <servers/bootstrap.h>
66
51#include <fcntl.h>
52#include <stdio.h>
53#include <stdlib.h>
54#include <unistd.h>
55
56
57static int send_trigger(unsigned int);
58
59#ifdef USE_MACH_IPC
60#include <mach/mach.h>
61#include <servers/netname.h>
62#include <mach/message.h>
63#include <mach/port.h>
64#include <mach/mach_error.h>
65#include <mach/host_special_ports.h>
66#include <servers/bootstrap.h>
67
67#include "auditd_control_user.h"
68#include "auditd_control.h"
68
69
70/*
71 * XXX the following is temporary until this can be added to the kernel
72 * audit.h header.
73 */
74#ifndef AUDIT_TRIGGER_INITIALIZE
75#define AUDIT_TRIGGER_INITIALIZE 7
76#endif
77
69static int
70send_trigger(unsigned int trigger)
71{
72 mach_port_t serverPort;
73 kern_return_t error;
74
75 error = host_get_audit_control_port(mach_host_self(), &serverPort);
76 if (error != KERN_SUCCESS) {
78static int
79send_trigger(unsigned int trigger)
80{
81 mach_port_t serverPort;
82 kern_return_t error;
83
84 error = host_get_audit_control_port(mach_host_self(), &serverPort);
85 if (error != KERN_SUCCESS) {
77 mach_error("Cannot get auditd_control Mach port: ", error);
86 if (geteuid() != 0) {
87 errno = EPERM;
88 perror("audit requires root privileges");
89 } else
90 mach_error("Cannot get auditd_control Mach port:",
91 error);
78 return (-1);
79 }
80
81 error = auditd_control(serverPort, trigger);
82 if (error != KERN_SUCCESS) {
83 mach_error("Error sending trigger: ", error);
84 return (-1);
85 }

--- 5 unchanged lines hidden (view full) ---

91
92static int
93send_trigger(unsigned int trigger)
94{
95 int error;
96
97 error = auditon(A_SENDTRIGGER, &trigger, sizeof(trigger));
98 if (error != 0) {
92 return (-1);
93 }
94
95 error = auditd_control(serverPort, trigger);
96 if (error != KERN_SUCCESS) {
97 mach_error("Error sending trigger: ", error);
98 return (-1);
99 }

--- 5 unchanged lines hidden (view full) ---

105
106static int
107send_trigger(unsigned int trigger)
108{
109 int error;
110
111 error = auditon(A_SENDTRIGGER, &trigger, sizeof(trigger));
112 if (error != 0) {
99 perror("Error sending trigger");
113 if (error == EPERM)
114 perror("audit requires root privileges");
115 else
116 perror("Error sending trigger");
100 return (-1);
101 }
102
103 return (0);
104}
105#endif /* ! USE_MACH_IPC */
106
107static void
108usage(void)
109{
110
117 return (-1);
118 }
119
120 return (0);
121}
122#endif /* ! USE_MACH_IPC */
123
124static void
125usage(void)
126{
127
111 (void)fprintf(stderr, "Usage: audit -n | -s | -t \n");
128 (void)fprintf(stderr, "Usage: audit -i | -n | -s | -t \n");
112 exit(-1);
113}
114
115/*
116 * Main routine to process command line options.
117 */
118int
119main(int argc, char **argv)
120{
121 int ch;
122 unsigned int trigger = 0;
123
124 if (argc != 2)
125 usage();
126
129 exit(-1);
130}
131
132/*
133 * Main routine to process command line options.
134 */
135int
136main(int argc, char **argv)
137{
138 int ch;
139 unsigned int trigger = 0;
140
141 if (argc != 2)
142 usage();
143
127 while ((ch = getopt(argc, argv, "nst")) != -1) {
144 while ((ch = getopt(argc, argv, "inst")) != -1) {
128 switch(ch) {
129
145 switch(ch) {
146
147 case 'i':
148 trigger = AUDIT_TRIGGER_INITIALIZE;
149 break;
150
130 case 'n':
131 trigger = AUDIT_TRIGGER_ROTATE_USER;
132 break;
133
134 case 's':
135 trigger = AUDIT_TRIGGER_READ_FILE;
136 break;
137

--- 16 unchanged lines hidden ---
151 case 'n':
152 trigger = AUDIT_TRIGGER_ROTATE_USER;
153 break;
154
155 case 's':
156 trigger = AUDIT_TRIGGER_READ_FILE;
157 break;
158

--- 16 unchanged lines hidden ---