]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: convert mux.c to new packet API
authordjm@openbsd.org <djm@openbsd.org>
Sat, 19 Jan 2019 21:35:25 +0000 (21:35 +0000)
committerDamien Miller <djm@mindrot.org>
Sat, 19 Jan 2019 22:02:36 +0000 (09:02 +1100)
with & ok markus@

OpenBSD-Commit-ID: 4e3893937bae66416e984b282d8f0f800aafd802

mux.c

diff --git a/mux.c b/mux.c
index abc1e05ab64c0c4d670755b94a980bdf8f6b4852..e89db193de3a71238d8af40088c93937a84c27a8 100644 (file)
--- a/mux.c
+++ b/mux.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mux.c,v 1.78 2019/01/19 21:31:32 djm Exp $ */
+/* $OpenBSD: mux.c,v 1.79 2019/01/19 21:35:25 djm Exp $ */
 /*
  * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
  *
@@ -68,9 +68,6 @@
 #include "clientloop.h"
 #include "ssherr.h"
 
-#include "opacket.h" /* XXX */
-extern struct ssh *active_state; /* XXX */
-
 /* from ssh.c */
 extern int tty_flag;
 extern Options options;
@@ -613,6 +610,7 @@ mux_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt)
        struct Forward *rfwd;
        Channel *c;
        struct sshbuf *out;
+       u_int port;
        int r;
 
        if ((c = channel_by_id(ssh, fctx->cid)) == NULL) {
@@ -635,7 +633,15 @@ mux_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt)
            rfwd->connect_host, rfwd->connect_port);
        if (type == SSH2_MSG_REQUEST_SUCCESS) {
                if (rfwd->listen_port == 0) {
-                       rfwd->allocated_port = packet_get_int();
+                       if ((r = sshpkt_get_u32(ssh, &port)) != 0)
+                               fatal("%s: packet error: %s",
+                                   __func__, ssh_err(r));
+                       if (port > 65535) {
+                               fatal("Invalid allocated port %u for "
+                                   "mux remote forward to %s:%d", port,
+                                   rfwd->connect_host, rfwd->connect_port);
+                       }
+                       rfwd->allocated_port = (int)port;
                        debug("Allocated port %u for mux remote forward"
                            " to %s:%d", rfwd->allocated_port,
                            rfwd->connect_host, rfwd->connect_port);
@@ -1409,7 +1415,8 @@ mux_session_confirm(struct ssh *ssh, int id, int success, void *arg)
        if (cctx->want_agent_fwd && options.forward_agent) {
                debug("Requesting authentication agent forwarding.");
                channel_request_start(ssh, id, "auth-agent-req@openssh.com", 0);
-               packet_send();
+               if ((r = sshpkt_send(ssh)) != 0)
+                       fatal("%s: packet error: %s", __func__, ssh_err(r));
        }
 
        client_session2_setup(ssh, id, cctx->want_tty, cctx->want_subsys,