From 22cd25d36059c784ea0da3ebeed063414aad44d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Mon, 27 Jul 2020 06:03:30 +0200 Subject: [PATCH 1/3] tokenize: reset *argv = NULL on error This allows the caller to call free() without having to worry about whether it has already been free:d or not. Closes #49. --- tokenize.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tokenize.c b/tokenize.c index b4aab6b5..703ecb07 100644 --- a/tokenize.c +++ b/tokenize.c @@ -46,6 +46,7 @@ tokenize_cmdline(char *cmdline, char ***argv) if (delim != ' ') { LOG_ERR("unterminated %s quote\n", delim == '"' ? "double" : "single"); free(*argv); + *argv = NULL; return false; } From a9eeeedc90224cb74b6d265c91c1a60fa884254c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Mon, 27 Jul 2020 06:04:29 +0200 Subject: [PATCH 2/3] tokenize: remove newline from log message (LOG_ERR appends one for us) --- tokenize.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tokenize.c b/tokenize.c index 703ecb07..2671e23b 100644 --- a/tokenize.c +++ b/tokenize.c @@ -44,7 +44,7 @@ tokenize_cmdline(char *cmdline, char ***argv) char *end = strchr(p, delim); if (end == NULL) { if (delim != ' ') { - LOG_ERR("unterminated %s quote\n", delim == '"' ? "double" : "single"); + LOG_ERR("unterminated %s quote", delim == '"' ? "double" : "single"); free(*argv); *argv = NULL; return false; From faad0936270171467546c920e8cb629c0aa69efc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Mon, 27 Jul 2020 16:41:35 +0200 Subject: [PATCH 3/3] changelog: mention fix for crash on unclosed quote in tokenizer --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index df304262..d4836891 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,9 @@ ### Fixed * Crash in scrollback search +* Crash when a **pipe-visible** or **pipe-scrollback** command + contained an unclosed quote + (https://codeberg.org/dnkl/foot/issues/49). ### Security