mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-12 11:10:28 +09:00
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 1833ce86f9.
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
44
src/config.c
44
src/config.c
@@ -806,28 +806,26 @@ ssh_config_get_auth_option(enum ssh_config_opcode_e opcode)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CHECK_COND_OR_FAIL(cond, error_message) \
|
#define CHECK_COND_OR_FAIL(cond, error_message) \
|
||||||
do { \
|
if ((cond)) { \
|
||||||
if ((cond)) { \
|
SSH_LOG(SSH_LOG_DEBUG, \
|
||||||
SSH_LOG(SSH_LOG_DEBUG, \
|
"line %d: %s: %s", \
|
||||||
"line %d: %s: %s", \
|
count, \
|
||||||
count, \
|
error_message, \
|
||||||
error_message, \
|
keyword); \
|
||||||
keyword); \
|
if (fail_on_unknown) { \
|
||||||
if (fail_on_unknown) { \
|
ssh_set_error(session, \
|
||||||
ssh_set_error(session, \
|
SSH_FATAL, \
|
||||||
SSH_FATAL, \
|
is_cli ? "%s '%s' value on CLI" \
|
||||||
is_cli ? "%s '%s' value on CLI" \
|
: "%s '%s' value at line %d", \
|
||||||
: "%s '%s' value at line %d", \
|
error_message, \
|
||||||
error_message, \
|
keyword, \
|
||||||
keyword, \
|
is_cli ? 0 : count); \
|
||||||
is_cli ? 0 : count); \
|
SAFE_FREE(x); \
|
||||||
SAFE_FREE(x); \
|
return SSH_ERROR; \
|
||||||
return SSH_ERROR; \
|
} \
|
||||||
} \
|
break; \
|
||||||
break; \
|
}
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
static int ssh_config_parse_line_internal(ssh_session session,
|
static int ssh_config_parse_line_internal(ssh_session session,
|
||||||
const char *line,
|
const char *line,
|
||||||
@@ -1578,7 +1576,7 @@ static int ssh_config_parse_line_internal(ssh_session session,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef SSH_PARSE_OR_FAIL
|
#undef CHECK_COND_OR_FAIL
|
||||||
|
|
||||||
int ssh_config_parse_line(ssh_session session,
|
int ssh_config_parse_line(ssh_session session,
|
||||||
const char *line,
|
const char *line,
|
||||||
|
|||||||
Reference in New Issue
Block a user