core: check selinux access on each unit when listing

Units might have different access rules, so check the access on each
unit when querying the full list.
This commit is contained in:
Luca Boccassi
2026-04-13 22:11:50 +01:00
parent 26fd286210
commit 04f32dddd7
+4 -4
View File
@@ -1265,10 +1265,6 @@ static int list_units_filtered(sd_bus_message *message, void *userdata, sd_bus_e
/* Anyone can call this method */
r = mac_selinux_access_check(message, "status", reterr_error);
if (r < 0)
return r;
r = sd_bus_message_new_method_return(message, &reply);
if (r < 0)
return r;
@@ -1281,6 +1277,10 @@ static int list_units_filtered(sd_bus_message *message, void *userdata, sd_bus_e
if (k != u->id)
continue;
r = mac_selinux_unit_access_check(u, message, "status", /* reterr_error= */ NULL);
if (r < 0)
continue; /* silently skip units the caller is not allowed to see */
if (!unit_passes_filter(u, states, patterns))
continue;