]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
selinux: fix missing SELinux unit access check 362/head
authorHATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
Wed, 24 Jun 2015 03:01:26 +0000 (12:01 +0900)
committerHATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
Thu, 25 Jun 2015 03:01:03 +0000 (12:01 +0900)
Currently, SELinux unit access check is not performed if a given unit
file has not been registered in a hash table. This is because function
manager_get_unit() only tries to pick up a Unit object from a Unit
hash table. Instead, we use function manager_load_unit() searching
Unit file pathes for the given Unit file.

src/core/selinux-access.c

index e9a9a020de76e0b025c12d6b9ea0f1ed2fa66306..50a90b0bace104a78d24044c9be980907476888c 100644 (file)
@@ -302,12 +302,12 @@ int mac_selinux_unit_access_check_strv(
         int r;
 
         STRV_FOREACH(i, units) {
-                u = manager_get_unit(m, *i);
-                if (u) {
-                        r = mac_selinux_unit_access_check(u, message, permission, error);
-                        if (r < 0)
-                                return r;
-                }
+                r = manager_load_unit(m, *i, NULL, error, &u);
+                if (r < 0)
+                        return r;
+                r = mac_selinux_unit_access_check(u, message, permission, error);
+                if (r < 0)
+                        return r;
         }
 #endif
         return 0;