upstream: properly fix ProxyJump parsing; Thanks to tb@ for

pointing out my error (parse_ssh_uri() can return -1/0/1, that I missed).
Reported by Raf Czlonka via bugs@

ok tb@

OpenBSD-Commit-ID: a2991a3794bcaf1ca2b025212cce11cdb5f6b7d6
This commit is contained in:
djm@openbsd.org 2020-12-21 09:19:53 +00:00 committed by Darren Tucker
parent d97fb87972
commit a11ca01587
1 changed files with 9 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $OpenBSD: readconf.c,v 1.344 2020/12/17 23:10:27 djm Exp $ */
/* $OpenBSD: readconf.c,v 1.345 2020/12/21 09:19:53 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@ -2783,7 +2783,7 @@ parse_jump(const char *s, Options *o, int active)
{
char *orig, *sdup, *cp;
char *host = NULL, *user = NULL;
int ret = -1, port = -1, first;
int r, ret = -1, port = -1, first;
active &= o->proxy_command == NULL && o->jump_host == NULL;
@ -2799,14 +2799,19 @@ parse_jump(const char *s, Options *o, int active)
if (first) {
/* First argument and configuration is active */
if (parse_ssh_uri(cp, &user, &host, &port) == -1 &&
parse_user_host_port(cp, &user, &host, &port) != 0)
r = parse_ssh_uri(cp, &user, &host, &port);
if (r == -1 || (r == 1 &&
parse_user_host_port(cp, &user, &host, &port) != 0))
goto out;
} else {
/* Subsequent argument or inactive configuration */
if (parse_ssh_uri(cp, NULL, NULL, NULL) == -1 &&
parse_user_host_port(cp, NULL, NULL, NULL) != 0)
goto out;
r = parse_ssh_uri(cp, NULL, NULL, NULL);
if (r == -1 || (r == 1 &&
parse_user_host_port(cp, NULL, NULL, NULL) != 0))
goto out;
}
first = 0; /* only check syntax for subsequent hosts */
} while (cp != sdup);