selinux: fix missing SELinux unit access check
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.
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user