|
Zbigniew Jędrzejewski-Szmek |
7f93bc |
From 5073418cdf3687cded374b8f77042473ad5873e7 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
From: Will Woods <wwoods@redhat.com>
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
Date: Fri, 25 Apr 2014 18:26:33 -0400
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
Subject: [PATCH] core: reindent {selinux, ima, smack}-setup.c
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
7-space indentation is just too weird to leave alone.
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
Make it 8 spaces, as per CODING_STYLE. No other changes.
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
(cherry picked from commit 4ab72d6fb499c2b4d8baced9fa94a8bbfa5a4b3d)
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
Conflicts:
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
src/core/ima-setup.c
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
[zj: just selinux-setup.c, as needed for futher commits.]
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
(cherry picked from commit 31b1d7a4f7358cdbc632e4cd2b61bef8fa34d281)
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
src/core/selinux-setup.c | 152 +++++++++++++++++++++++------------------------
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
1 file changed, 76 insertions(+), 76 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
diff --git a/src/core/selinux-setup.c b/src/core/selinux-setup.c
|
|
Zbigniew Jędrzejewski-Szmek |
1cc3df |
index 9a5d6b2a9d..6d8bc89965 100644
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
--- a/src/core/selinux-setup.c
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+++ b/src/core/selinux-setup.c
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
@@ -46,82 +46,82 @@ static int null_log(int type, const char *fmt, ...) {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
int selinux_setup(bool *loaded_policy) {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
#ifdef HAVE_SELINUX
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- int enforce = 0;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- usec_t before_load, after_load;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- security_context_t con;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- int r;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- union selinux_callback cb;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- assert(loaded_policy);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- /* Turn off all of SELinux' own logging, we want to do that */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- cb.func_log = null_log;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- selinux_set_callback(SELINUX_CB_LOG, cb);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- /* Don't load policy in the initrd if we don't appear to have
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- * it. For the real root, we check below if we've already
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- * loaded policy, and return gracefully.
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- if (in_initrd() && access(selinux_path(), F_OK) < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- /* Already initialized by somebody else? */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- r = getcon_raw(&con);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- if (r == 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- bool initialized;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- initialized = !streq(con, "kernel");
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- freecon(con);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- if (initialized)
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- }
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- /* Make sure we have no fds open while loading the policy and
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- * transitioning */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- log_close();
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- /* Now load the policy */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- before_load = now(CLOCK_MONOTONIC);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- r = selinux_init_load_policy(&enforce);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- if (r == 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- char timespan[FORMAT_TIMESPAN_MAX];
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- char *label;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- retest_selinux();
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- /* Transition to the new context */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- r = label_get_create_label_from_exe(SYSTEMD_BINARY_PATH, &label);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- if (r < 0 || label == NULL) {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- log_open();
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- log_error("Failed to compute init label, ignoring.");
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- } else {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- r = setcon(label);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- log_open();
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- if (r < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- log_error("Failed to transition into init label '%s', ignoring.", label);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- label_free(label);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- }
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- after_load = now(CLOCK_MONOTONIC);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- log_info("Successfully loaded SELinux policy in %s.",
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- format_timespan(timespan, sizeof(timespan), after_load - before_load, 0));
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- *loaded_policy = true;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- } else {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- log_open();
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- if (enforce > 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- log_error("Failed to load SELinux policy. Freezing.");
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- return -EIO;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- } else
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- log_debug("Unable to load SELinux policy. Ignoring.");
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- }
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ int enforce = 0;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ usec_t before_load, after_load;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ security_context_t con;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ int r;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ union selinux_callback cb;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ assert(loaded_policy);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ /* Turn off all of SELinux' own logging, we want to do that */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ cb.func_log = null_log;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ selinux_set_callback(SELINUX_CB_LOG, cb);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ /* Don't load policy in the initrd if we don't appear to have
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ * it. For the real root, we check below if we've already
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ * loaded policy, and return gracefully.
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ if (in_initrd() && access(selinux_path(), F_OK) < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ /* Already initialized by somebody else? */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ r = getcon_raw(&con);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ if (r == 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ bool initialized;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ initialized = !streq(con, "kernel");
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ freecon(con);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ if (initialized)
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ /* Make sure we have no fds open while loading the policy and
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ * transitioning */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ log_close();
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ /* Now load the policy */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ before_load = now(CLOCK_MONOTONIC);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ r = selinux_init_load_policy(&enforce);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ if (r == 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ char timespan[FORMAT_TIMESPAN_MAX];
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ char *label;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ retest_selinux();
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ /* Transition to the new context */
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ r = label_get_create_label_from_exe(SYSTEMD_BINARY_PATH, &label);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ if (r < 0 || label == NULL) {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ log_open();
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ log_error("Failed to compute init label, ignoring.");
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ } else {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ r = setcon(label);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ log_open();
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ if (r < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ log_error("Failed to transition into init label '%s', ignoring.", label);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ label_free(label);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ after_load = now(CLOCK_MONOTONIC);
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ log_info("Successfully loaded SELinux policy in %s.",
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ format_timespan(timespan, sizeof(timespan), after_load - before_load, 0));
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ *loaded_policy = true;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ } else {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ log_open();
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ if (enforce > 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ log_error("Failed to load SELinux policy. Freezing.");
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ return -EIO;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ } else
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ log_debug("Unable to load SELinux policy. Ignoring.");
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
#endif
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
- return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
a59965 |
}
|