diff --git a/phpseclib/Net/SSH2.php b/phpseclib/Net/SSH2.php index fe562d99..90c81d0d 100644 --- a/phpseclib/Net/SSH2.php +++ b/phpseclib/Net/SSH2.php @@ -2941,7 +2941,7 @@ class Net_SSH2 { $max_size = min( $this->packet_size_client_to_server[$client_channel], $this->window_size_client_to_server[$client_channel] - ); + ) - 4; while (strlen($data) > $max_size) { $packet = pack('CN2a*', NET_SSH2_MSG_CHANNEL_DATA, @@ -2956,7 +2956,7 @@ class Net_SSH2 { return false; } - if ($max_size == $this->window_size_client_to_server[$client_channel]) { + if ($max_size == $this->window_size_client_to_server[$client_channel] - 4) { $this->bitmap^= NET_SSH2_MASK_WINDOW_ADJUST; // using an invalid channel will let the buffers be built up for the valid channels $this->_get_channel_packet(-1); @@ -2964,11 +2964,11 @@ class Net_SSH2 { $max_size = min( $this->packet_size_client_to_server[$client_channel], $this->window_size_client_to_server[$client_channel] - ); + ) - 4; } } - if (strlen($data) >= $this->window_size_client_to_server[$client_channel]) { + if (strlen($data) >= $this->window_size_client_to_server[$client_channel] - 4) { $this->bitmap^= NET_SSH2_MASK_WINDOW_ADJUST; $this->_get_channel_packet(-1); $this->bitmap^= NET_SSH2_MASK_WINDOW_ADJUST;