chiark / gitweb /
journald: set SO_PASSEC only if selinux is enabled
[elogind.git] / src / journal / journald.c
index e9c00b443cff7decd1cf62df2b6e8fc82314337f..50f66be9d9c59a79592150b5c8360a8a91019e9a 100644 (file)
@@ -29,6 +29,7 @@
 #include <sys/ioctl.h>
 #include <linux/sockios.h>
 #include <sys/statvfs.h>
+#include <sys/user.h>
 
 #include <systemd/sd-journal.h>
 #include <systemd/sd-login.h>
@@ -1309,6 +1310,7 @@ finish:
                         free(iovec[j].iov_base);
         }
 
+        free(iovec);
         free(identifier);
         free(message);
 }
@@ -2133,7 +2135,7 @@ static int process_event(Server *s, struct epoll_event *ev) {
                                 uint8_t buf[CMSG_SPACE(sizeof(struct ucred)) +
                                             CMSG_SPACE(sizeof(struct timeval)) +
                                             CMSG_SPACE(sizeof(int)) +
-                                            CMSG_SPACE(LINE_MAX)]; /* selinux label */
+                                            CMSG_SPACE(PAGE_SIZE)]; /* selinux label */
                         } control;
                         ssize_t n;
                         int v;
@@ -2306,10 +2308,12 @@ static int open_syslog_socket(Server *s) {
                 return -errno;
         }
 
+#ifdef HAVE_SE
         one = 1;
         r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_PASSSEC, &one, sizeof(one));
         if (r < 0)
                 log_warning("SO_PASSSEC failed: %m");
+#endif
 
         one = 1;
         r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_TIMESTAMP, &one, sizeof(one));
@@ -2367,10 +2371,12 @@ static int open_native_socket(Server*s) {
                 return -errno;
         }
 
+#ifdef HAVE_SELINUX
         one = 1;
         r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_PASSSEC, &one, sizeof(one));
         if (r < 0)
                 log_warning("SO_PASSSEC failed: %m");
+#endif
 
         one = 1;
         r = setsockopt(s->native_fd, SOL_SOCKET, SO_TIMESTAMP, &one, sizeof(one));