From 67bd5dd460d646d49b9959ce3190272f2bfe06be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sun, 22 Dec 2024 07:09:37 +0100 Subject: [PATCH] selection: fix crash when tripple clicking in a region containing NUL characters If a cell contains a NUL character, it was incorrectly treated as a quote, later triggering an assertion. Patch by Johannes Altmanninger --- CHANGELOG.md | 1 + selection.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9c665fa..b55fe9a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -86,6 +86,7 @@ * Crash when receiving an OSC-9 or OSC-777 with an empty notification body ([#1866][1866]). +* Crash when tripple-clicking on region containing `NUL` characters. [1866]: https://codeberg.org/dnkl/foot/issues/1866 diff --git a/selection.c b/selection.c index 91c851d2..d7aa617a 100644 --- a/selection.c +++ b/selection.c @@ -533,8 +533,8 @@ selection_find_quote_left(struct terminal *term, struct coord *pos, const struct row *row = grid_row_in_view(term->grid, pos->row); char32_t wc = row->cells[pos->col].wc; - if ((*quote_char == '\0' && (wc == '"' || wc == '\'')) || - wc == *quote_char) + if (*quote_char == '\0' ? (wc == '"' || wc == '\'') + : wc == *quote_char) { return false; } @@ -555,8 +555,8 @@ selection_find_quote_left(struct terminal *term, struct coord *pos, wc = row->cells[next_col].wc; - if ((*quote_char == '\0' && (wc == '"' || wc == '\'')) || - wc == *quote_char) + if (*quote_char == '\0' ? (wc == '"' || wc == '\'') + : wc == *quote_char) { pos->row = next_row; pos->col = next_col + 1;