1
diff --git a/src/core/dbus-socket.c b/src/core/dbus-socket.c
2
index 77d98ea..973f905 100644
3
--- a/src/core/dbus-socket.c
4
+++ b/src/core/dbus-socket.c
5
@@ -205,7 +205,7 @@ DBusHandlerResult bus_socket_message_handler(Unit *u, DBusConnection *c, DBusMes
6
{ "org.freedesktop.systemd1.Socket", bus_socket_properties, s },
7
{ "org.freedesktop.systemd1.Socket", bus_exec_context_properties, &s->exec_context },
8
{ "org.freedesktop.systemd1.Socket", bus_kill_context_properties, &s->kill_context },
9
- { "org.freedesktop.systemd1.Socket", bus_unit_properties, u },
10
+ { "org.freedesktop.systemd1.Socket", bus_unit_cgroup_properties, u },
14
diff --git a/src/core/manager.c b/src/core/manager.c
15
index c7f8f20..0508628 100644
16
--- a/src/core/manager.c
17
+++ b/src/core/manager.c
18
@@ -1372,7 +1372,7 @@ static int manager_process_signal_fd(Manager *m) {
21
if (m->running_as == SYSTEMD_SYSTEM) {
22
- manager_start_target(m, SPECIAL_CTRL_ALT_DEL_TARGET, JOB_REPLACE);
23
+ manager_start_target(m, SPECIAL_CTRL_ALT_DEL_TARGET, JOB_REPLACE_IRREVERSIBLY);
27
diff --git a/src/initctl/initctl.c b/src/initctl/initctl.c
28
index 735f1e1..5fbce4a 100644
29
--- a/src/initctl/initctl.c
30
+++ b/src/initctl/initctl.c
31
@@ -122,7 +122,7 @@ static void change_runlevel(Server *s, int runlevel) {
36
+ mode = "replace-irreversibly";
38
log_debug("Running request %s/start/%s", target, mode);
40
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
41
index cc52b8a..01f23ce 100644
42
--- a/src/journal/journald-server.c
43
+++ b/src/journal/journald-server.c
44
@@ -227,9 +227,11 @@ void server_fix_perms(Server *s, JournalFile *f, uid_t uid) {
48
- /* We do not recalculate the mask here, so that the fchmod() mask above stays intact. */
49
+ /* We do not recalculate the mask unconditionally here,
50
+ * so that the fchmod() mask above stays intact. */
51
if (acl_get_permset(entry, &permset) < 0 ||
52
- acl_add_perm(permset, ACL_READ) < 0) {
53
+ acl_add_perm(permset, ACL_READ) < 0 ||
54
+ calc_acl_mask_if_needed(&acl) < 0) {
55
log_warning("Failed to patch ACL on %s, ignoring: %m", f->path);
58
diff --git a/src/shared/acl-util.c b/src/shared/acl-util.c
59
index 48bb12f..fb04e49 100644
60
--- a/src/shared/acl-util.c
61
+++ b/src/shared/acl-util.c
62
@@ -69,6 +69,34 @@ int acl_find_uid(acl_t acl, uid_t uid, acl_entry_t *entry) {
66
+int calc_acl_mask_if_needed(acl_t *acl_p) {
72
+ for (found = acl_get_entry(*acl_p, ACL_FIRST_ENTRY, &i);
74
+ found = acl_get_entry(*acl_p, ACL_NEXT_ENTRY, &i)) {
78
+ if (acl_get_tag_type(i, &tag) < 0)
81
+ if (tag == ACL_MASK)
88
+ if (acl_calc_mask(acl_p) < 0)
94
int search_acl_groups(char*** dst, const char* path, bool* belong) {
97
diff --git a/src/shared/acl-util.h b/src/shared/acl-util.h
98
index 23090d9..36ef490 100644
99
--- a/src/shared/acl-util.h
100
+++ b/src/shared/acl-util.h
104
int acl_find_uid(acl_t acl, uid_t uid, acl_entry_t *entry);
105
+int calc_acl_mask_if_needed(acl_t *acl_p);
106
int search_acl_groups(char*** dst, const char* path, bool* belong);
107
diff --git a/src/shared/polkit.c b/src/shared/polkit.c
108
index cea7074..1c5e9e3 100644
109
--- a/src/shared/polkit.c
110
+++ b/src/shared/polkit.c
111
@@ -38,12 +38,8 @@ int verify_polkit(
114
DBusMessage *m = NULL, *reply = NULL;
115
- const char *unix_process = "unix-process", *pid = "pid", *starttime = "start-time", *cancel_id = "";
116
+ const char *system_bus_name = "system-bus-name", *name = "name", *cancel_id = "";
117
uint32_t flags = interactive ? 1 : 0;
120
- unsigned long long starttime_raw;
121
- uint64_t starttime_u64;
122
DBusMessageIter iter_msg, iter_struct, iter_array, iter_dict, iter_variant;
124
dbus_bool_t authorized = FALSE, challenge = FALSE;
125
@@ -68,14 +64,6 @@ int verify_polkit(
129
- pid_raw = bus_get_unix_process_id(c, sender, error);
133
- r = get_starttime_of_pid(pid_raw, &starttime_raw);
137
m = dbus_message_new_method_call(
138
"org.freedesktop.PolicyKit1",
139
"/org/freedesktop/PolicyKit1/Authority",
140
@@ -86,22 +74,13 @@ int verify_polkit(
142
dbus_message_iter_init_append(m, &iter_msg);
144
- pid_u32 = (uint32_t) pid_raw;
145
- starttime_u64 = (uint64_t) starttime_raw;
147
if (!dbus_message_iter_open_container(&iter_msg, DBUS_TYPE_STRUCT, NULL, &iter_struct) ||
148
- !dbus_message_iter_append_basic(&iter_struct, DBUS_TYPE_STRING, &unix_process) ||
149
+ !dbus_message_iter_append_basic(&iter_struct, DBUS_TYPE_STRING, &system_bus_name) ||
150
!dbus_message_iter_open_container(&iter_struct, DBUS_TYPE_ARRAY, "{sv}", &iter_array) ||
151
!dbus_message_iter_open_container(&iter_array, DBUS_TYPE_DICT_ENTRY, NULL, &iter_dict) ||
152
- !dbus_message_iter_append_basic(&iter_dict, DBUS_TYPE_STRING, &pid) ||
153
- !dbus_message_iter_open_container(&iter_dict, DBUS_TYPE_VARIANT, "u", &iter_variant) ||
154
- !dbus_message_iter_append_basic(&iter_variant, DBUS_TYPE_UINT32, &pid_u32) ||
155
- !dbus_message_iter_close_container(&iter_dict, &iter_variant) ||
156
- !dbus_message_iter_close_container(&iter_array, &iter_dict) ||
157
- !dbus_message_iter_open_container(&iter_array, DBUS_TYPE_DICT_ENTRY, NULL, &iter_dict) ||
158
- !dbus_message_iter_append_basic(&iter_dict, DBUS_TYPE_STRING, &starttime) ||
159
- !dbus_message_iter_open_container(&iter_dict, DBUS_TYPE_VARIANT, "t", &iter_variant) ||
160
- !dbus_message_iter_append_basic(&iter_variant, DBUS_TYPE_UINT64, &starttime_u64) ||
161
+ !dbus_message_iter_append_basic(&iter_dict, DBUS_TYPE_STRING, &name) ||
162
+ !dbus_message_iter_open_container(&iter_dict, DBUS_TYPE_VARIANT, "s", &iter_variant) ||
163
+ !dbus_message_iter_append_basic(&iter_variant, DBUS_TYPE_STRING, &sender) ||
164
!dbus_message_iter_close_container(&iter_dict, &iter_variant) ||
165
!dbus_message_iter_close_container(&iter_array, &iter_dict) ||
166
!dbus_message_iter_close_container(&iter_struct, &iter_array) ||
167
diff --git a/units/systemd-tmpfiles-setup-dev.service.in b/units/systemd-tmpfiles-setup-dev.service.in
168
index f029285..764da01 100644
169
--- a/units/systemd-tmpfiles-setup-dev.service.in
170
+++ b/units/systemd-tmpfiles-setup-dev.service.in
171
@@ -14,4 +14,5 @@ ConditionCapability=CAP_MKNOD
176
ExecStart=@rootbindir@/systemd-tmpfiles --prefix=/dev --create