diff options
author | Jakub Jelen <jjelen@redhat.com> | 2019-01-23 12:03:57 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2019-01-24 15:13:30 +0100 |
commit | 3ce31532eb3d2e5ef0e6f881a4d4a88a9bd44fb2 (patch) | |
tree | 2a9c67a2b77d5ea8fb76481dbd70f6ef6867f592 /src/config.c | |
parent | 3b5f9ef8d65a40b9367dd8d9240f9ef15b94c393 (diff) | |
download | libssh-3ce31532eb3d2e5ef0e6f881a4d4a88a9bd44fb2.tar.gz libssh-3ce31532eb3d2e5ef0e6f881a4d4a88a9bd44fb2.tar.xz libssh-3ce31532eb3d2e5ef0e6f881a4d4a88a9bd44fb2.zip |
config: Fail if there is missing argument for some of the match keywords
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/config.c')
-rw-r--r-- | src/config.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/config.c b/src/config.c index 2cbb6d5b..a16dd0e0 100644 --- a/src/config.c +++ b/src/config.c @@ -597,10 +597,10 @@ ssh_config_parse_line(ssh_session session, int *parsing) { enum ssh_config_opcode_e opcode; - const char *p; - char *s, *x; - char *keyword; - char *lowerhost; + const char *p = NULL, *p2 = NULL; + char *s = NULL, *x = NULL; + char *keyword = NULL; + char *lowerhost = NULL; size_t len; int i, rv; uint8_t *seen = session->opts.options_seen; @@ -663,7 +663,7 @@ ssh_config_parse_line(ssh_session session, *parsing = 0; do { - p = ssh_config_get_str_tok(&s, NULL); + p = p2 = ssh_config_get_str_tok(&s, NULL); if (p == NULL || p[0] == '\0') { break; } @@ -701,11 +701,20 @@ ssh_config_parse_line(ssh_session session, case MATCH_LOCALUSER: /* Skip one argument */ p = ssh_config_get_str_tok(&s, NULL); + if (p == NULL || p[0] == '\0') { + SSH_LOG(SSH_LOG_WARN, "line %d: Match keyword " + "'%s' requires argument\n", count, p2); + SAFE_FREE(x); + return -1; + } args++; FALL_THROUGH; case MATCH_CANONICAL: - SSH_LOG(SSH_LOG_WARN, "line: %d: Unsupported Match keyword " - "'%s', Ignoring\n", count, p); + /* These do not need any argument */ + SSH_LOG(SSH_LOG_WARN, + "line %d: Unsupported Match keyword '%s', ignoring\n", + count, + p2); result = 0; break; |