]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: Handle dynamic remote port forwarding in escape commandline's
authordtucker@openbsd.org <dtucker@openbsd.org>
Thu, 10 Nov 2022 23:03:10 +0000 (23:03 +0000)
committerDarren Tucker <dtucker@dtucker.net>
Fri, 11 Nov 2022 00:24:46 +0000 (11:24 +1100)
-R processing. bz#3499, ok djm@

OpenBSD-Commit-ID: 194ee4cfe7ed0e2b8ad0727f493c798a50454208

clientloop.c

index 289d0b68a08a20ce865000acb72dad7ea53b0a78..02349ccb92b461fc15c4888f5d27e6e44081edb3 100644 (file)
@@ -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 <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, 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) {