From: dtucker@openbsd.org Date: Thu, 10 Nov 2022 23:03:10 +0000 (+0000) Subject: upstream: Handle dynamic remote port forwarding in escape commandline's X-Git-Tag: V_9_2_P1~109 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=650de7ecd3567b5a5dbf16dd1eb598bd8c20bca8;p=thirdparty%2Fopenssh-portable.git upstream: Handle dynamic remote port forwarding in escape commandline's -R processing. bz#3499, ok djm@ OpenBSD-Commit-ID: 194ee4cfe7ed0e2b8ad0727f493c798a50454208 --- diff --git a/clientloop.c b/clientloop.c index 289d0b68a..02349ccb9 100644 --- a/clientloop.c +++ b/clientloop.c @@ -1,4 +1,4 @@ -/* $OpenBSD: clientloop.c,v 1.381 2022/11/09 01:37:44 djm Exp $ */ +/* $OpenBSD: clientloop.c,v 1.382 2022/11/10 23:03:10 dtucker Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -846,8 +846,15 @@ process_cmdline(struct ssh *ssh) } logit("Canceled forwarding."); } else { - if (!parse_forward(&fwd, s, dynamic, remote)) { - logit("Bad forwarding specification."); + /* -R specs can be both dynamic or not, so check both. */ + if (remote) { + if (!parse_forward(&fwd, s, 0, remote) && + !parse_forward(&fwd, s, 1, remote)) { + logit("Bad remote forwarding specification."); + goto out; + } + } else if (!parse_forward(&fwd, s, dynamic, remote)) { + logit("Bad local forwarding specification."); goto out; } if (local || dynamic) {