From 5b0b1a3db505ad5e98b15c830b96a432cec48c78 Mon Sep 17 00:00:00 2001 From: Karol Trzcinski Date: Fri, 25 Sep 2020 15:21:52 +0200 Subject: [PATCH] logger: Skip %s from formatting string Passing %s with random address leads to logger crash. It's especially important right now, after changing print formatter for UUID from %s to %pU. It's why DBG_ABI patch number has been updated. Signed-off-by: Karol Trzcinski --- src/include/user/abi_dbg.h | 2 +- tools/logger/convert.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/include/user/abi_dbg.h b/src/include/user/abi_dbg.h index 73107b1a1..58f5602b1 100644 --- a/src/include/user/abi_dbg.h +++ b/src/include/user/abi_dbg.h @@ -20,7 +20,7 @@ #define SOF_ABI_DBG_MAJOR 5 #define SOF_ABI_DBG_MINOR 2 -#define SOF_ABI_DBG_PATCH 0 +#define SOF_ABI_DBG_PATCH 1 #define SOF_ABI_DBG_VERSION SOF_ABI_VER(SOF_ABI_DBG_MAJOR, \ SOF_ABI_DBG_MINOR, \ diff --git a/tools/logger/convert.c b/tools/logger/convert.c index 62a34af95..881f2cb80 100644 --- a/tools/logger/convert.c +++ b/tools/logger/convert.c @@ -200,6 +200,13 @@ static void process_params(struct proc_ldc_entry *pe, if (p[1] == '%') { /* Skip "%%" */ p += 2; + } else if (p[1] == 's') { + /* check for string printing, because it leads to logger crash */ + log_err("String printing is not supported\n"); + pe->params[i] = (uintptr_t)asprintf("", e->params[i]); + pe->subst_mask |= 1 << i; + ++i; + p += 2; } else if (p + 2 >= t_end && p[1] == 'p' && p[2] == 'U') { /* substitute UUID entry address with formatted string pointer from heap */ pe->params[i] = (uintptr_t)asprintf_uuid(p, e->params[i], use_colors,