|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
From 9eacea6b51bb86fb2c066bd4fa7cba28a17d12f3 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
From: Daniel Mack <daniel@zonque.org>
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
Date: Sat, 20 Sep 2014 04:34:30 +0200
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
Subject: [PATCH] bus-policy: resolve [ug]id of POLICY_ITEM_{USER,GROUP}
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
Do the lookup during parsing already, and set i->uid, or i->gid to the
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
numerical values.
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
src/bus-proxyd/bus-policy.c | 28 ++++++++++++++++++++++++++++
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
1 file changed, 28 insertions(+)
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
diff --git a/src/bus-proxyd/bus-policy.c b/src/bus-proxyd/bus-policy.c
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
index 2c4708dd77..ab16cda32b 100644
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
--- a/src/bus-proxyd/bus-policy.c
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+++ b/src/bus-proxyd/bus-policy.c
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
@@ -525,8 +525,36 @@ static int file_load(Policy *p, const char *path) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
return -EINVAL;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ switch (i->class) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ case POLICY_ITEM_USER:
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ if (!streq(name, "*")) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ const char *u = name;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ r = get_user_creds(&u, &i->uid, NULL, NULL, NULL);
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ if (r < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ log_error("Failed to resolve user %s: %s", name, strerror(-r));
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ else
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ i->uid_valid = true;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ break;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ case POLICY_ITEM_GROUP:
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ if (!streq(name, "*")) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ const char *g = name;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ r = get_group_creds(&g, &i->gid);
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ if (r < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ log_error("Failed to resolve group %s: %s", name, strerror(-r));
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ else
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ i->gid_valid = true;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ break;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ default:
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ break;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
i->name = name;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
name = NULL;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
state = STATE_ALLOW_DENY;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
} else {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
log_error("Unexpected token (14) in %s:%u.", path, line);
|