diff options
author | djm@openbsd.org <djm@openbsd.org> | 2018-05-22 02:13:26 +0200 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2018-05-22 02:15:18 +0200 |
commit | 4b22fd8ecefd059a66140be67f352eb6145a9d88 (patch) | |
tree | d85605c4323f2a1946dca71fcf2f86162d17f497 /readconf.c | |
parent | upstream: correct keyowrd name (permitemptypasswords); from brendan (diff) | |
download | openssh-4b22fd8ecefd059a66140be67f352eb6145a9d88.tar.xz openssh-4b22fd8ecefd059a66140be67f352eb6145a9d88.zip |
upstream: support ProxyJump=none to disable ProxyJump
functionality; bz#2869 ok dtucker@
OpenBSD-Commit-ID: 1c06ee08eb78451b5837fcfd8cbebc5ff3a67a01
Diffstat (limited to '')
-rw-r--r-- | readconf.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/readconf.c b/readconf.c index 5a1055bcb..7b7a0d7e0 100644 --- a/readconf.c +++ b/readconf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: readconf.c,v 1.286 2018/04/06 13:02:39 djm Exp $ */ +/* $OpenBSD: readconf.c,v 1.287 2018/05/22 00:13:26 djm Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -2072,6 +2072,12 @@ fill_default_options(Options * options) CLEAR_ON_NONE(options->proxy_command); CLEAR_ON_NONE(options->control_path); CLEAR_ON_NONE(options->revoked_host_keys); + if (options->jump_host != NULL && + strcmp(options->jump_host, "none") == 0 && + options->jump_port == 0 && options->jump_user == NULL) { + free(options->jump_host); + options->jump_host = NULL; + } /* options->identity_agent distinguishes NULL from 'none' */ /* options->user will be set in the main program if appropriate */ /* options->hostname will be set in the main program if appropriate */ @@ -2300,6 +2306,8 @@ parse_jump(const char *s, Options *o, int active) orig = sdup = xstrdup(s); first = active; do { + if (strcasecmp(s, "none") == 0) + break; if ((cp = strrchr(sdup, ',')) == NULL) cp = sdup; /* last */ else @@ -2320,14 +2328,19 @@ parse_jump(const char *s, Options *o, int active) } while (cp != sdup); /* success */ if (active) { - o->jump_user = user; - o->jump_host = host; - o->jump_port = port; - o->proxy_command = xstrdup("none"); - user = host = NULL; - if ((cp = strrchr(s, ',')) != NULL && cp != s) { - o->jump_extra = xstrdup(s); - o->jump_extra[cp - s] = '\0'; + if (strcasecmp(s, "none") == 0) { + o->jump_host = xstrdup("none"); + o->jump_port = 0; + } else { + o->jump_user = user; + o->jump_host = host; + o->jump_port = port; + o->proxy_command = xstrdup("none"); + user = host = NULL; + if ((cp = strrchr(s, ',')) != NULL && cp != s) { + o->jump_extra = xstrdup(s); + o->jump_extra[cp - s] = '\0'; + } } } ret = 0; |