From b12bc77cd372f01a5cba52657dff7132bc5f9705 Mon Sep 17 00:00:00 2001 From: Rafael Zalamena Date: Mon, 25 Jan 2021 08:33:01 -0300 Subject: [PATCH 1/2] watchfrr: fix crash on missing optional argument Fix `netns` command line handling for missing argument (it's optional). Signed-off-by: Rafael Zalamena --- watchfrr/watchfrr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/watchfrr/watchfrr.c b/watchfrr/watchfrr.c index 319bd6a771..12682fa35e 100644 --- a/watchfrr/watchfrr.c +++ b/watchfrr/watchfrr.c @@ -1414,7 +1414,7 @@ int main(int argc, char **argv) } break; case OPTION_NETNS: netns_en = true; - if (strchr(optarg, '/')) { + if (optarg && strchr(optarg, '/')) { fprintf(stderr, "invalid network namespace name \"%s\" (may not contain slashes)\n", optarg); From 53a78fc1d9b900ae43333f755c9617a618989ae6 Mon Sep 17 00:00:00 2001 From: Rafael Zalamena Date: Tue, 26 Jan 2021 13:58:34 -0300 Subject: [PATCH 2/2] watchfrr: fix SA warning `valid_command` now causes static analyzer complaints since it no longer assumes `optarg` is non-NULL. If this was the case then `valid_command` would return `false` (or 0) because it would mean the string is empty and doesn't contain the '%s' it expects. Signed-off-by: Rafael Zalamena --- watchfrr/watchfrr.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/watchfrr/watchfrr.c b/watchfrr/watchfrr.c index 12682fa35e..441320b193 100644 --- a/watchfrr/watchfrr.c +++ b/watchfrr/watchfrr.c @@ -1080,6 +1080,9 @@ static int valid_command(const char *cmd) { char *p; + if (cmd == NULL) + return 0; + return ((p = strchr(cmd, '%')) != NULL) && (*(p + 1) == 's') && !strchr(p + 1, '%'); }