]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
journald: make audit socket optional
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 2 Aug 2015 17:55:57 +0000 (13:55 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 12 Oct 2015 17:12:08 +0000 (13:12 -0400)
If we were given some sockets through socket activation, and audit
socket is not among them, do not try to open it. This way, if the
socket unit is disabled, we will not receive audit events.

https://bugzilla.redhat.com/show_bug.cgi?id=1227379

src/journal/journald-server.c

index bff4e6f5377627b22cc78fcd48d314a970dcb235..ae325c439e9348c548789ba99749fe9c7af15b29 100644 (file)
@@ -1453,6 +1453,7 @@ static int server_open_hostname(Server *s) {
 int server_init(Server *s) {
         _cleanup_fdset_free_ FDSet *fds = NULL;
         int n, r, fd;
+        bool no_sockets;
 
         assert(s);
 
@@ -1569,6 +1570,9 @@ int server_init(Server *s) {
                 fds = fdset_free(fds);
         }
 
+        no_sockets = s->native_fd < 0 && s->stdout_fd < 0 && s->syslog_fd < 0 && s->audit_fd < 0;
+
+        /* always open stdout, syslog, native, and kmsg sockets */
         r = server_open_stdout_socket(s);
         if (r < 0)
                 return r;
@@ -1585,9 +1589,12 @@ int server_init(Server *s) {
         if (r < 0)
                 return r;
 
-        r = server_open_audit(s);
-        if (r < 0)
-                return r;
+        /* Unless we got *some* sockets and not audit, open audit socket */
+        if (s->audit_fd >= 0 || no_sockets) {
+                r = server_open_audit(s);
+                if (r < 0)
+                        return r;
+        }
 
         r = server_open_kernel_seqnum(s);
         if (r < 0)