]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: degrade gracefully if a sftp-server offers the
authordjm@openbsd.org <djm@openbsd.org>
Sun, 6 Jun 2021 03:17:02 +0000 (03:17 +0000)
committerDamien Miller <djm@mindrot.org>
Sun, 6 Jun 2021 03:24:38 +0000 (13:24 +1000)
limits@openssh.com extension but fails when the client tries to invoke it.
Reported by Hector Martin via bz3318

OpenBSD-Commit-ID: bd9d1839c41811616ede4da467e25746fcd9b967

sftp-client.c

index cadaee6bdaa2b2848567a8017fe0a11a04cc78c2..1167027f30f4637df2360223b46c20610b8d4217 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-client.c,v 1.142 2021/04/03 06:18:41 djm Exp $ */
+/* $OpenBSD: sftp-client.c,v 1.143 2021/06/06 03:17:02 djm Exp $ */
 /*
  * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
  *
@@ -577,8 +577,12 @@ do_limits(struct sftp_conn *conn, struct sftp_limits *limits)
        if (id != msg_id)
                fatal("ID mismatch (%u != %u)", msg_id, id);
        if (type != SSH2_FXP_EXTENDED_REPLY) {
-               fatal("Expected SSH2_FXP_EXTENDED_REPLY(%u) packet, got %u",
+               debug_f("expected SSH2_FXP_EXTENDED_REPLY(%u) packet, got %u",
                    SSH2_FXP_EXTENDED_REPLY, type);
+               /* Disable the limits extension */
+               conn->exts &= ~SFTP_EXT_LIMITS;
+               sshbuf_free(msg);
+               return 0;
        }
 
        memset(limits, 0, sizeof(*limits));