1
0
mirror of https://github.com/danog/tgseclib.git synced 2024-11-26 20:24:39 +01:00

SSH2: reset $this->bitmap when the connection fails

This commit is contained in:
terrafrost 2018-10-05 21:27:59 -05:00
parent b4e66d343e
commit 0c26415f93

View File

@ -1221,6 +1221,7 @@ class Net_SSH2
} }
if (feof($this->fsock)) { if (feof($this->fsock)) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -1247,6 +1248,7 @@ class Net_SSH2
if (!$this->send_kex_first) { if (!$this->send_kex_first) {
$response = $this->_get_binary_packet(); $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -1479,6 +1481,7 @@ class Net_SSH2
$kexinit_payload_server = $this->_get_binary_packet(); $kexinit_payload_server = $this->_get_binary_packet();
if ($kexinit_payload_server === false) { if ($kexinit_payload_server === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -1606,6 +1609,7 @@ class Net_SSH2
$response = $this->_get_binary_packet(); $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -1701,12 +1705,14 @@ class Net_SSH2
$data = pack('CNa*', $clientKexInitMessage, strlen($eBytes), $eBytes); $data = pack('CNa*', $clientKexInitMessage, strlen($eBytes), $eBytes);
if (!$this->_send_binary_packet($data)) { if (!$this->_send_binary_packet($data)) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
$response = $this->_get_binary_packet(); $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -1815,6 +1821,7 @@ class Net_SSH2
$response = $this->_get_binary_packet(); $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -2284,6 +2291,7 @@ class Net_SSH2
} }
return $this->_login_helper($username, $password); return $this->_login_helper($username, $password);
} }
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -2340,6 +2348,7 @@ class Net_SSH2
$response = $this->_get_binary_packet(); $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -2398,6 +2407,7 @@ class Net_SSH2
$response = $this->_get_binary_packet(); $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -2498,6 +2508,7 @@ class Net_SSH2
} else { } else {
$orig = $response = $this->_get_binary_packet(); $orig = $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -2686,6 +2697,7 @@ class Net_SSH2
$response = $this->_get_binary_packet(); $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -2742,6 +2754,7 @@ class Net_SSH2
$response = $this->_get_binary_packet(); $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -2868,6 +2881,7 @@ class Net_SSH2
$response = $this->_get_binary_packet(); $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -3008,6 +3022,7 @@ class Net_SSH2
$response = $this->_get_binary_packet(); $response = $this->_get_binary_packet();
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }
@ -3352,8 +3367,8 @@ class Net_SSH2
function _get_binary_packet($skip_channel_filter = false) function _get_binary_packet($skip_channel_filter = false)
{ {
if (!is_resource($this->fsock) || feof($this->fsock)) { if (!is_resource($this->fsock) || feof($this->fsock)) {
user_error('Connection closed prematurely');
$this->bitmap = 0; $this->bitmap = 0;
user_error('Connection closed prematurely');
return false; return false;
} }
@ -3396,8 +3411,8 @@ class Net_SSH2
while ($remaining_length > 0) { while ($remaining_length > 0) {
$temp = fread($this->fsock, $remaining_length); $temp = fread($this->fsock, $remaining_length);
if ($temp === false || feof($this->fsock)) { if ($temp === false || feof($this->fsock)) {
user_error('Error reading from socket');
$this->bitmap = 0; $this->bitmap = 0;
user_error('Error reading from socket');
return false; return false;
} }
$buffer.= $temp; $buffer.= $temp;
@ -3415,8 +3430,8 @@ class Net_SSH2
if ($this->hmac_check !== false) { if ($this->hmac_check !== false) {
$hmac = fread($this->fsock, $this->hmac_size); $hmac = fread($this->fsock, $this->hmac_size);
if ($hmac === false || strlen($hmac) != $this->hmac_size) { if ($hmac === false || strlen($hmac) != $this->hmac_size) {
user_error('Error reading socket');
$this->bitmap = 0; $this->bitmap = 0;
user_error('Error reading socket');
return false; return false;
} elseif ($hmac != $this->hmac_check->hash(pack('NNCa*', $this->get_seq_no, $packet_length, $padding_length, $payload . $padding))) { } elseif ($hmac != $this->hmac_check->hash(pack('NNCa*', $this->get_seq_no, $packet_length, $padding_length, $payload . $padding))) {
user_error('Invalid HMAC'); user_error('Invalid HMAC');
@ -3724,6 +3739,7 @@ class Net_SSH2
$response = $this->_get_binary_packet(true); $response = $this->_get_binary_packet(true);
if ($response === false) { if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server'); user_error('Connection closed by server');
return false; return false;
} }