term: ignore attempts to set a title that contains an invalid UTF-8 sequence

Setting the title ultimately leads to a call to
xdg_toplevel::set_title(). It is a protocol violation to try to set a
title that contains an invalid UTF-8 sequence:

    The string must be encoded in UTF-8.

Closes #1552
This commit is contained in:
Daniel Eklöf 2024-02-06 13:08:43 +01:00
parent 756da87346
commit 316136f428
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 10 additions and 0 deletions

View file

@ -102,10 +102,13 @@
set in `[environment]`.
* Environment variables normally set by foot lost with `footclient
-E,--client-environment` ([#1568][1568]).
* XDG toplevel protocol violation, by trying to set a title that
contains an invalid UTF-8 sequence ([#1552][1552]).
[1531]: https://codeberg.org/dnkl/foot/issues/1531
[1573]: https://codeberg.org/dnkl/foot/issues/1573
[1568]: https://codeberg.org/dnkl/foot/issues/1568
[1552]: https://codeberg.org/dnkl/foot/issues/1552
### Security

View file

@ -3249,6 +3249,13 @@ term_set_window_title(struct terminal *term, const char *title)
if (term->window_title != NULL && streq(term->window_title, title))
return;
if (mbsntoc32(NULL, title, strlen(title), 0) == (char32_t)-1) {
/* It's an xdg_toplevel::set_title() protocol violation to set
a title with an invalid UTF-8 sequence */
LOG_WARN("%s: title is not valid UTF-8, ignoring", title);
return;
}
free(term->window_title);
term->window_title = xstrdup(title);
render_refresh_title(term);