teknoraver / rpms / systemd

Forked from rpms/systemd 2 months ago
Clone

Blame 0066-journald-simplify-context-handling.patch

Zbigniew Jędrzejewski-Szmek 436654
From 87bfffb29b2379dfffc799f0b148369b49c0c269 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 436654
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Zbigniew Jędrzejewski-Szmek 436654
Date: Sat, 6 Jun 2015 21:36:52 -0400
Zbigniew Jędrzejewski-Szmek 436654
Subject: [PATCH] journald: simplify context handling
Zbigniew Jędrzejewski-Szmek 436654
Zbigniew Jędrzejewski-Szmek 436654
By using our homegrown function we can dispense with all the iffdefery.
Zbigniew Jędrzejewski-Szmek 436654
Zbigniew Jędrzejewski-Szmek 436654
(cherry picked from commit 2de56f70941eaf91a4520bf33de47a87ebd8b2cb)
Zbigniew Jędrzejewski-Szmek 436654
---
Zbigniew Jędrzejewski-Szmek 436654
 src/journal/journald-stream.c | 32 ++++++++------------------------
Zbigniew Jędrzejewski-Szmek 436654
 1 file changed, 8 insertions(+), 24 deletions(-)
Zbigniew Jędrzejewski-Szmek 436654
Zbigniew Jędrzejewski-Szmek 436654
diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
Zbigniew Jędrzejewski-Szmek 436654
index b572147a56..db2f581972 100644
Zbigniew Jędrzejewski-Szmek 436654
--- a/src/journal/journald-stream.c
Zbigniew Jędrzejewski-Szmek 436654
+++ b/src/journal/journald-stream.c
Zbigniew Jędrzejewski-Szmek 436654
@@ -59,10 +59,7 @@ struct StdoutStream {
Zbigniew Jędrzejewski-Szmek 436654
         int fd;
Zbigniew Jędrzejewski-Szmek 436654
 
Zbigniew Jędrzejewski-Szmek 436654
         struct ucred ucred;
Zbigniew Jędrzejewski-Szmek 436654
-#ifdef HAVE_SELINUX
Zbigniew Jędrzejewski-Szmek 436654
-        security_context_t security_context;
Zbigniew Jędrzejewski-Szmek 436654
-#endif
Zbigniew Jędrzejewski-Szmek 436654
-
Zbigniew Jędrzejewski-Szmek 436654
+        char *label;
Zbigniew Jędrzejewski-Szmek 436654
         char *identifier;
Zbigniew Jędrzejewski-Szmek 436654
         char *unit_id;
Zbigniew Jędrzejewski-Szmek 436654
         int priority;
Zbigniew Jędrzejewski-Szmek 436654
@@ -99,12 +96,7 @@ void stdout_stream_free(StdoutStream *s) {
Zbigniew Jędrzejewski-Szmek 436654
         }
Zbigniew Jędrzejewski-Szmek 436654
 
Zbigniew Jędrzejewski-Szmek 436654
         safe_close(s->fd);
Zbigniew Jędrzejewski-Szmek 436654
-
Zbigniew Jędrzejewski-Szmek 436654
-#ifdef HAVE_SELINUX
Zbigniew Jędrzejewski-Szmek 436654
-        if (s->security_context)
Zbigniew Jędrzejewski-Szmek 436654
-                freecon(s->security_context);
Zbigniew Jędrzejewski-Szmek 436654
-#endif
Zbigniew Jędrzejewski-Szmek 436654
-
Zbigniew Jędrzejewski-Szmek 436654
+        free(s->label);
Zbigniew Jędrzejewski-Szmek 436654
         free(s->identifier);
Zbigniew Jędrzejewski-Szmek 436654
         free(s->unit_id);
Zbigniew Jędrzejewski-Szmek 436654
         free(s->state_file);
Zbigniew Jędrzejewski-Szmek 436654
@@ -225,8 +217,7 @@ static int stdout_stream_log(StdoutStream *s, const char *p) {
Zbigniew Jędrzejewski-Szmek 436654
         char syslog_facility[sizeof("SYSLOG_FACILITY=")-1 + DECIMAL_STR_MAX(int) + 1];
Zbigniew Jędrzejewski-Szmek 436654
         _cleanup_free_ char *message = NULL, *syslog_identifier = NULL;
Zbigniew Jędrzejewski-Szmek 436654
         unsigned n = 0;
Zbigniew Jędrzejewski-Szmek 436654
-        char *label = NULL;
Zbigniew Jędrzejewski-Szmek 436654
-        size_t label_len = 0;
Zbigniew Jędrzejewski-Szmek 436654
+        size_t label_len;
Zbigniew Jędrzejewski-Szmek 436654
 
Zbigniew Jędrzejewski-Szmek 436654
         assert(s);
Zbigniew Jędrzejewski-Szmek 436654
         assert(p);
Zbigniew Jędrzejewski-Szmek 436654
@@ -271,14 +262,8 @@ static int stdout_stream_log(StdoutStream *s, const char *p) {
Zbigniew Jędrzejewski-Szmek 436654
         if (message)
Zbigniew Jędrzejewski-Szmek 436654
                 IOVEC_SET_STRING(iovec[n++], message);
Zbigniew Jędrzejewski-Szmek 436654
 
Zbigniew Jędrzejewski-Szmek 436654
-#ifdef HAVE_SELINUX
Zbigniew Jędrzejewski-Szmek 436654
-        if (s->security_context) {
Zbigniew Jędrzejewski-Szmek 436654
-                label = (char*) s->security_context;
Zbigniew Jędrzejewski-Szmek 436654
-                label_len = strlen((char*) s->security_context);
Zbigniew Jędrzejewski-Szmek 436654
-        }
Zbigniew Jędrzejewski-Szmek 436654
-#endif
Zbigniew Jędrzejewski-Szmek 436654
-
Zbigniew Jędrzejewski-Szmek 436654
-        server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, label, label_len, s->unit_id, priority, 0);
Zbigniew Jędrzejewski-Szmek 436654
+        label_len = s->label ? strlen(s->label) : 0;
Zbigniew Jędrzejewski-Szmek 436654
+        server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, s->label, label_len, s->unit_id, priority, 0);
Zbigniew Jędrzejewski-Szmek 436654
         return 0;
Zbigniew Jędrzejewski-Szmek 436654
 }
Zbigniew Jędrzejewski-Szmek 436654
 
Zbigniew Jędrzejewski-Szmek 436654
@@ -489,12 +474,11 @@ static int stdout_stream_install(Server *s, int fd, StdoutStream **ret) {
Zbigniew Jędrzejewski-Szmek 436654
         if (r < 0)
Zbigniew Jędrzejewski-Szmek 436654
                 return log_error_errno(r, "Failed to determine peer credentials: %m");
Zbigniew Jędrzejewski-Szmek 436654
 
Zbigniew Jędrzejewski-Szmek 436654
-#ifdef HAVE_SELINUX
Zbigniew Jędrzejewski-Szmek 436654
         if (mac_selinux_use()) {
Zbigniew Jędrzejewski-Szmek 436654
-                if (getpeercon(fd, &stream->security_context) < 0 && errno != ENOPROTOOPT)
Zbigniew Jędrzejewski-Szmek 436654
-                        log_error_errno(errno, "Failed to determine peer security context: %m");
Zbigniew Jędrzejewski-Szmek 436654
+                r = getpeersec(fd, &stream->label);
Zbigniew Jędrzejewski-Szmek 436654
+                if (r < 0 && r != -EOPNOTSUPP)
Zbigniew Jędrzejewski-Szmek 436654
+                        (void) log_warning_errno(r, "Failed to determine peer security context: %m");
Zbigniew Jędrzejewski-Szmek 436654
         }
Zbigniew Jędrzejewski-Szmek 436654
-#endif
Zbigniew Jędrzejewski-Szmek 436654
 
Zbigniew Jędrzejewski-Szmek 436654
         (void) shutdown(fd, SHUT_WR);
Zbigniew Jędrzejewski-Szmek 436654