aboutsummaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
authorJakub Jelen <jjelen@redhat.com>2019-01-23 12:03:57 +0100
committerAndreas Schneider <asn@cryptomilk.org>2019-01-24 15:13:30 +0100
commit3ce31532eb3d2e5ef0e6f881a4d4a88a9bd44fb2 (patch)
tree2a9c67a2b77d5ea8fb76481dbd70f6ef6867f592 /src/config.c
parent3b5f9ef8d65a40b9367dd8d9240f9ef15b94c393 (diff)
downloadlibssh-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.c23
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;