Merge pull request #328 from terrafrost/get_binary_packet

SSH2: improve handling of incomplete packets

* terrafrost/get_binary_packet:
  SSH2: improve handling of incomplete packets
This commit is contained in:
Andreas Fischer 2014-04-19 15:44:29 +02:00
commit b90deb5e83

View File

@ -2683,6 +2683,11 @@ class Net_SSH2
$buffer = '';
while ($remaining_length > 0) {
$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;
$remaining_length-= strlen($temp);
}
@ -2696,7 +2701,11 @@ class Net_SSH2
if ($this->hmac_check !== false) {
$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');
return false;
}