mirror of
https://github.com/phpseclib/phpseclib.git
synced 2024-12-27 11:52:48 +00:00
SSH2: improve handling of incomplete packets
This commit is contained in:
parent
b9a29d8678
commit
efd3b96dc8
@ -2683,6 +2683,11 @@ class Net_SSH2
|
|||||||
$buffer = '';
|
$buffer = '';
|
||||||
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)) {
|
||||||
|
user_error('Error reading from socket');
|
||||||
|
$this->bitmap = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
$buffer.= $temp;
|
$buffer.= $temp;
|
||||||
$remaining_length-= strlen($temp);
|
$remaining_length-= strlen($temp);
|
||||||
}
|
}
|
||||||
@ -2696,7 +2701,11 @@ 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 != $this->hmac_check->hash(pack('NNCa*', $this->get_seq_no, $packet_length, $padding_length, $payload . $padding))) {
|
if ($hmac === false || strlen($hmac) != $this->hmac_size) {
|
||||||
|
user_error('Error reading socket');
|
||||||
|
$this->bitmap = 0;
|
||||||
|
return false;
|
||||||
|
} 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');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user