diff --git a/phpseclib/Net/SSH2.php b/phpseclib/Net/SSH2.php index 22a686d8..93c83143 100644 --- a/phpseclib/Net/SSH2.php +++ b/phpseclib/Net/SSH2.php @@ -191,100 +191,100 @@ class Net_SSH2 * Server Identifier * * @see Net_SSH2::getServerIdentification() - * @var String + * @var mixed false or Array * @access private */ - var $server_identifier = ''; + var $server_identifier = false; /** * Key Exchange Algorithms * * @see Net_SSH2::getKexAlgorithims() - * @var Array + * @var mixed false or Array * @access private */ - var $kex_algorithms; + var $kex_algorithms = false; /** * Server Host Key Algorithms * * @see Net_SSH2::getServerHostKeyAlgorithms() - * @var Array + * @var mixed false or Array * @access private */ - var $server_host_key_algorithms; + var $server_host_key_algorithms = false; /** * Encryption Algorithms: Client to Server * * @see Net_SSH2::getEncryptionAlgorithmsClient2Server() - * @var Array + * @var mixed false or Array * @access private */ - var $encryption_algorithms_client_to_server; + var $encryption_algorithms_client_to_server = false; /** * Encryption Algorithms: Server to Client * * @see Net_SSH2::getEncryptionAlgorithmsServer2Client() - * @var Array + * @var mixed false or Array * @access private */ - var $encryption_algorithms_server_to_client; + var $encryption_algorithms_server_to_client = false; /** * MAC Algorithms: Client to Server * * @see Net_SSH2::getMACAlgorithmsClient2Server() - * @var Array + * @var mixed false or Array * @access private */ - var $mac_algorithms_client_to_server; + var $mac_algorithms_client_to_server = false; /** * MAC Algorithms: Server to Client * * @see Net_SSH2::getMACAlgorithmsServer2Client() - * @var Array + * @var mixed false or Array * @access private */ - var $mac_algorithms_server_to_client; + var $mac_algorithms_server_to_client = false; /** * Compression Algorithms: Client to Server * * @see Net_SSH2::getCompressionAlgorithmsClient2Server() - * @var Array + * @var mixed false or Array * @access private */ - var $compression_algorithms_client_to_server; + var $compression_algorithms_client_to_server = false; /** * Compression Algorithms: Server to Client * * @see Net_SSH2::getCompressionAlgorithmsServer2Client() - * @var Array + * @var mixed false or Array * @access private */ - var $compression_algorithms_server_to_client; + var $compression_algorithms_server_to_client = false; /** * Languages: Server to Client * * @see Net_SSH2::getLanguagesServer2Client() - * @var Array + * @var mixed false or Array * @access private */ - var $languages_server_to_client; + var $languages_server_to_client = false; /** * Languages: Client to Server * * @see Net_SSH2::getLanguagesClient2Server() - * @var Array + * @var mixed false or Array * @access private */ - var $languages_client_to_server; + var $languages_client_to_server = false; /** * Block Size for Server to Client Encryption @@ -949,6 +949,12 @@ class Net_SSH2 */ function _connect() { + if ($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR) { + return false; + } + + $this->bitmap |= NET_SSH2_MASK_CONSTRUCTOR; + $timeout = $this->connectionTimeout; $host = $this->host . ':' . $this->port; @@ -1811,7 +1817,6 @@ class Net_SSH2 function _login($username) { if (!($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR)) { - $this->bitmap |= NET_SSH2_MASK_CONSTRUCTOR; if (!$this->_connect()) { return false; } @@ -3522,6 +3527,8 @@ class Net_SSH2 */ function getServerIdentification() { + $this->_connect(); + return $this->server_identifier; } @@ -3533,6 +3540,8 @@ class Net_SSH2 */ function getKexAlgorithms() { + $this->_connect(); + return $this->kex_algorithms; } @@ -3544,6 +3553,8 @@ class Net_SSH2 */ function getServerHostKeyAlgorithms() { + $this->_connect(); + return $this->server_host_key_algorithms; } @@ -3555,6 +3566,8 @@ class Net_SSH2 */ function getEncryptionAlgorithmsClient2Server() { + $this->_connect(); + return $this->encryption_algorithms_client_to_server; } @@ -3566,6 +3579,8 @@ class Net_SSH2 */ function getEncryptionAlgorithmsServer2Client() { + $this->_connect(); + return $this->encryption_algorithms_server_to_client; } @@ -3577,6 +3592,8 @@ class Net_SSH2 */ function getMACAlgorithmsClient2Server() { + $this->_connect(); + return $this->mac_algorithms_client_to_server; } @@ -3588,6 +3605,8 @@ class Net_SSH2 */ function getMACAlgorithmsServer2Client() { + $this->_connect(); + return $this->mac_algorithms_server_to_client; } @@ -3599,6 +3618,8 @@ class Net_SSH2 */ function getCompressionAlgorithmsClient2Server() { + $this->_connect(); + return $this->compression_algorithms_client_to_server; } @@ -3610,6 +3631,8 @@ class Net_SSH2 */ function getCompressionAlgorithmsServer2Client() { + $this->_connect(); + return $this->compression_algorithms_server_to_client; } @@ -3621,6 +3644,8 @@ class Net_SSH2 */ function getLanguagesServer2Client() { + $this->_connect(); + return $this->languages_server_to_client; } @@ -3632,6 +3657,8 @@ class Net_SSH2 */ function getLanguagesClient2Server() { + $this->_connect(); + return $this->languages_client_to_server; } @@ -3661,7 +3688,6 @@ class Net_SSH2 function getServerPublicHostKey() { if (!($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR)) { - $this->bitmap |= NET_SSH2_MASK_CONSTRUCTOR; if (!$this->_connect()) { return false; }