From e82677a92377e0752b8295443aa38e39c0616453 Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Mon, 15 Dec 2025 11:08:12 +0100 Subject: [PATCH] config: Fix error paths of configuration parsing Thanks coverity, oss-fuzz and Ram-Z reporting this independently. CID 1643770 https://oss-fuzz.com/issue/4969113899565056 https://oss-fuzz.com/issue/6448013813022720 Fixes up 1833ce86f9a7e795f91ce89fa69375a1f113a796. Signed-off-by: Jakub Jelen Reviewed-by: Andreas Schneider --- src/config.c | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/src/config.c b/src/config.c index 7c4f75ac..c1f1206d 100644 --- a/src/config.c +++ b/src/config.c @@ -806,28 +806,26 @@ ssh_config_get_auth_option(enum ssh_config_opcode_e opcode) return -1; } -#define CHECK_COND_OR_FAIL(cond, error_message) \ - do { \ - if ((cond)) { \ - SSH_LOG(SSH_LOG_DEBUG, \ - "line %d: %s: %s", \ - count, \ - error_message, \ - keyword); \ - if (fail_on_unknown) { \ - ssh_set_error(session, \ - SSH_FATAL, \ - is_cli ? "%s '%s' value on CLI" \ - : "%s '%s' value at line %d", \ - error_message, \ - keyword, \ - is_cli ? 0 : count); \ - SAFE_FREE(x); \ - return SSH_ERROR; \ - } \ - break; \ - } \ - } while (0) +#define CHECK_COND_OR_FAIL(cond, error_message) \ + if ((cond)) { \ + SSH_LOG(SSH_LOG_DEBUG, \ + "line %d: %s: %s", \ + count, \ + error_message, \ + keyword); \ + if (fail_on_unknown) { \ + ssh_set_error(session, \ + SSH_FATAL, \ + is_cli ? "%s '%s' value on CLI" \ + : "%s '%s' value at line %d", \ + error_message, \ + keyword, \ + is_cli ? 0 : count); \ + SAFE_FREE(x); \ + return SSH_ERROR; \ + } \ + break; \ + } static int ssh_config_parse_line_internal(ssh_session session, const char *line, @@ -1578,7 +1576,7 @@ static int ssh_config_parse_line_internal(ssh_session session, return 0; } -#undef SSH_PARSE_OR_FAIL +#undef CHECK_COND_OR_FAIL int ssh_config_parse_line(ssh_session session, const char *line,