]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream commit
authordjm@openbsd.org <djm@openbsd.org>
Tue, 30 Jun 2015 05:25:07 +0000 (05:25 +0000)
committerDamien Miller <djm@mindrot.org>
Tue, 30 Jun 2015 06:12:20 +0000 (16:12 +1000)
fatal() when a remote window update causes the window
 value to overflow. Reported by Georg Wicherski, ok markus@

Upstream-ID: ead397a9aceb3bf74ebfa5fcaf259d72e569f351

channels.c

index 8069cf1f989e2ef73725a8f1134dc15886006885..3fe836aad7f03ee02c3dc8e34dc2d7ca1423ac6b 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.c,v 1.345 2015/06/30 05:23:25 djm Exp $ */
+/* $OpenBSD: channels.c,v 1.346 2015/06/30 05:25:07 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -2641,7 +2641,7 @@ channel_input_window_adjust(int type, u_int32_t seq, void *ctxt)
 {
        Channel *c;
        int id;
-       u_int adjust;
+       u_int adjust, tmp;
 
        if (!compat20)
                return 0;
@@ -2657,7 +2657,10 @@ channel_input_window_adjust(int type, u_int32_t seq, void *ctxt)
        adjust = packet_get_int();
        packet_check_eom();
        debug2("channel %d: rcvd adjust %u", id, adjust);
-       c->remote_window += adjust;
+       if ((tmp = c->remote_window + adjust) < c->remote_window)
+               fatal("channel %d: adjust %u overflows remote window %u",
+                   id, adjust, c->remote_window);
+       c->remote_window = tmp;
        return 0;
 }