From: naddy@openbsd.org Date: Wed, 20 Jul 2016 10:45:27 +0000 (+0000) Subject: upstream commit X-Git-Tag: V_7_3_P1~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=324583e8fb3935690be58790425793df619c6d4d;p=thirdparty%2Fopenssh-portable.git upstream commit Do not clobber the global jump_host variables when parsing an inactive configuration. ok djm@ Upstream-ID: 5362210944d91417d5976346d41ac0b244350d31 --- diff --git a/readconf.c b/readconf.c index cb2999d82..8b5b21907 100644 --- a/readconf.c +++ b/readconf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: readconf.c,v 1.257 2016/07/15 00:24:30 djm Exp $ */ +/* $OpenBSD: readconf.c,v 1.258 2016/07/20 10:45:27 naddy Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -2286,13 +2286,14 @@ parse_jump(const char *s, Options *o, int active) { char *orig, *sdup, *cp; char *host = NULL, *user = NULL; - int ret = -1, port = -1; + int ret = -1, port = -1, first; active &= o->proxy_command == NULL && o->jump_host == NULL; orig = sdup = xstrdup(s); + first = active; while ((cp = strsep(&sdup, ",")) && cp != NULL) { - if (active) { + if (first) { /* First argument and configuration is active */ if (parse_user_host_port(cp, &user, &host, &port) != 0) goto out; @@ -2301,19 +2302,21 @@ parse_jump(const char *s, Options *o, int active) if (parse_user_host_port(cp, NULL, NULL, NULL) != 0) goto out; } - active = 0; /* only check syntax for subsequent hosts */ + first = 0; /* only check syntax for subsequent hosts */ } /* success */ - free(orig); - o->jump_user = user; - o->jump_host = host; - o->jump_port = port; - o->proxy_command = xstrdup("none"); - user = host = NULL; - if ((cp = strchr(s, ',')) != NULL && cp[1] != '\0') - o->jump_extra = xstrdup(cp + 1); + if (active) { + o->jump_user = user; + o->jump_host = host; + o->jump_port = port; + o->proxy_command = xstrdup("none"); + user = host = NULL; + if ((cp = strchr(s, ',')) != NULL && cp[1] != '\0') + o->jump_extra = xstrdup(cp + 1); + } ret = 0; out: + free(orig); free(user); free(host); return ret;