From d95fc5f790efe373f5527ffef7c7d68edd650322 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Mon, 30 Jun 2025 07:39:07 +0200 Subject: [PATCH] logit: fix parse_prio(), check result of parse clang-tidy complained that parse_prio() always returned OK(0), turns out it was right. This patch adds validation of the parsing. Signed-off-by: Joachim Wiberg --- src/logit.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/logit.c b/src/logit.c index 6fd51714..03ff23e7 100644 --- a/src/logit.c +++ b/src/logit.c @@ -103,10 +103,12 @@ static int logit(int level, char *buf, size_t len) return 0; } -static int parse_prio(char *arg, int *f, int *l) +static int parse_prio(char *arg, int *fac, int *lvl) { char *duparg = strdup(arg); - char *ptr, *prio; + const char *prio; + char *ptr; + int found; if (!duparg) prio = arg; @@ -117,23 +119,34 @@ static int parse_prio(char *arg, int *f, int *l) if (ptr) { *ptr++ = 0; + found = -1; for (int i = 0; facilitynames[i].c_name; i++) { if (!strcmp(facilitynames[i].c_name, prio)) { - *f = facilitynames[i].c_val; + found = facilitynames[i].c_val; break; } } + if (found == -1) + return 1; + + *fac = found; prio = ptr; } + found = -1; for (int i = 0; prioritynames[i].c_name; i++) { + if (!strcmp(prioritynames[i].c_name, prio)) { - *l = prioritynames[i].c_val; + found = prioritynames[i].c_val; break; } } + if (found == -1) + return 1; + *lvl = found; + if (duparg != arg) free(duparg);