From 23ada09d149140b7a38d376dd4fd7e2c3da589aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Mon, 15 Apr 2024 16:02:54 +0200 Subject: [PATCH] osc: reject notifications with invalid UTF-8 strings --- CHANGELOG.md | 4 ++++ osc.c | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 175403dc..0f3a0179 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,10 @@ ## Unreleased ### Added ### Changed + +* Notifications with invalid UTF-8 strings are now ignored. + + ### Deprecated ### Removed ### Fixed diff --git a/osc.c b/osc.c index 06cc7db6..446461a2 100644 --- a/osc.c +++ b/osc.c @@ -524,6 +524,19 @@ osc_notify(struct terminal *term, char *string) const char *title = strtok_r(string, ";", &ctx); const char *msg = strtok_r(NULL, "\x00", &ctx); + if (title == NULL) + return; + + if (mbsntoc32(NULL, title, strlen(title), 0) == (char32_t)-1) { + LOG_WARN("%s: notification title is not valid UTF-8, ignoring", title); + return; + } + + if (msg != NULL && mbsntoc32(NULL, msg, strlen(msg), 0) == (char32_t)-1) { + LOG_WARN("%s: notification message is not valid UTF-8, ignoring", msg); + return; + } + notify_notify(term, title, msg != NULL ? msg : ""); }