core/manager: use cellescape and don't be too aggressive

Addresses https://github.com/systemd/systemd/pull/32068#issuecomment-2034799862
This commit is contained in:
Mike Yuan
2024-04-03 23:51:11 +08:00
parent 596c9e671a
commit a2098d8bf7
+5 -10
View File
@@ -2586,22 +2586,17 @@ static void manager_invoke_notify_message(
UNIT_VTABLE(u)->notify_message(u, ucred, tags, fds);
else if (DEBUG_LOGGING) {
_cleanup_free_ char *buf = NULL, *x = NULL, *y = NULL;
_cleanup_free_ char *joined = strv_join(tags, ", ");
char buf[CELLESCAPE_DEFAULT_LENGTH];
buf = strv_join(tags, ", ");
if (buf)
x = ellipsize(buf, 20, 90);
if (x)
y = cescape(x);
log_unit_debug(u, "Got notification message \"%s\", ignoring.", strnull(y));
log_unit_debug(u, "Got notification message from unexpected unit type, ignoring: %s",
joined ? cellescape(buf, sizeof(buf), joined) : "(null)");
}
}
static int manager_dispatch_notify_fd(sd_event_source *source, int fd, uint32_t revents, void *userdata) {
_cleanup_fdset_free_ FDSet *fds = NULL;
Manager *m = ASSERT_PTR(userdata);
_cleanup_fdset_free_ FDSet *fds = NULL;
char buf[NOTIFY_BUFFER_MAX+1];
struct iovec iovec = {
.iov_base = buf,