SFTP: make get() return correctly sized strings

This commit is contained in:
terrafrost 2013-12-27 11:08:33 -06:00
parent d2c4ccfc28
commit 466f9354df

View File

@ -1685,6 +1685,7 @@ class Net_SFTP extends Net_SSH2
$content = ''; $content = '';
} }
$start = $offset;
$size = $this->max_sftp_packet < $length || $length < 0 ? $this->max_sftp_packet : $length; $size = $this->max_sftp_packet < $length || $length < 0 ? $this->max_sftp_packet : $length;
while (true) { while (true) {
$packet = pack('Na*N3', strlen($handle), $handle, $offset / 4294967296, $offset, $size); $packet = pack('Na*N3', strlen($handle), $handle, $offset / 4294967296, $offset, $size);
@ -1718,12 +1719,12 @@ class Net_SFTP extends Net_SSH2
return false; return false;
} }
if ($length > 0 && $length <= $offset - $size) { if ($length > 0 && $length <= $offset - $start) {
break; break;
} }
} }
if ($length > 0 && $length <= $offset - $size) { if ($length > 0 && $length <= $offset - $start) {
if ($local_file === false) { if ($local_file === false) {
$content = substr($content, 0, $length); $content = substr($content, 0, $length);
} else { } else {