Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pull in changes from qtcreator #12

Open
wants to merge 107 commits into
base: master
Choose a base branch
from
Open

pull in changes from qtcreator #12

wants to merge 107 commits into from

Conversation

sandsmark
Copy link
Contributor

lots of fixes, and adds support for e. g. elliptic curve stuff.

Christian Kandeler and others added 30 commits January 20, 2018 14:43
So far, the only option is whether to use the default proxy or not. More
will follow.

Change-Id: Icd1ec407a0269cc8e7577901853d3873fd03015c
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This is the "direct-tcpip" port forwarding
specified in RFC 4254.

Change-Id: I1ffa2e923b4479c7211b1b4304e66895b565fb64
Reviewed-by: hjk <qthjk@ovi.com>
Reviewed-by: Christian Kandeler <christian.kandeler@nokia.com>
Change-Id: I0b104942d97238aff8ac21e0e047a17079a53181
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Otherwise we might get false positives in the check in
SshConnectionManager.

Change-Id: Ia54be53ce294c75fbfad2e6475c9d489d2639504
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
While we want to conform to the specs, there are systems out there today
whose SSH servers send non-conforming identifications strings. We now
enable API clients to switch the respecive checks off, and we do so
ourselves in the RemoteLinux plugin, since the only known problems
are with OpenSSH servers.

Change-Id: I9e6f9076f2dc7435a0bde7016f99cfb2fcb30a9c
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
These appear when compiling in release mode.

Change-Id: I76ee3b1b8d728fd839d713ee4f914b6965851b99
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
There is now at least one Linux distribution (openSUSE 12.3) that
disables the "password" authentication method in its default
sshd_config, while others allow it, but disable "keyboard-interactive".
This patch tackles the problem as follows:
    1) Implement RFC 4256 ("keyboard-interactive") and make this method
available in the API.
    2) In addition, the API offers to try both password-based methods
one after the other, until one has succeeded or all have failed.
    3) Dialogs continue to offer just the choice between "Password" and
"Key", as to not confuse users. Internally, "Password" uses the feature
described in 2).

Task-number: QTCREATORBUG-9568
Change-Id: Ic81bd5d2dc4b1332ea1a8be938c19811c21a9087
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* adds missing fields dmp1, dmq1 and iqmp to RSA structure
* verified with openssl 1.0.1

Change-Id: I2891cd04303f7b44bbe24a844b2d74669c07f521
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
If there are still open channels in a connection being released,
that is not necessarily a mistake: The channels could already be
in the closing state, and it would be unreasonable for us to expect
API clients to always wait for confirmation before releasing the
connection, as this can complicate code quite a bit, turning a
synchronous operation into an asynchronous one.

Change-Id: If8c604c9ee1294728e7947c8d5c8130d6e704b49
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Botan requires to be initialized before first use. We do that on-demand,
but currently we miss one of the two places where this is necessary.
The problem only manifests itself with multithreading, because Botan
itself also does an on-demand initialization, but does not guard
against concurrent access when doing so.

Task-number: QTCREATORBUG-9980
Change-Id: Id65c428e3d8842c8a6f16942b11d52412239d3c9
Reviewed-by: David Kaspar <dkaspar@blackberry.com>
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Provide a QProcess-like abstraction that can be used
to implement processes running locally or on a remote
device. Objects of a concrete class implementing the functionality
are created by IDevice objects.
Current implementations are:
     - Local execution (QProcess-based), provided via the DesktopDevice.
     - Remote execution via SSH.
     - A specialized case of the former for remote Linux systems (provided by
       LinuxDevice).
The latter is already being used in a number of places. As a result, lots of
code dealing with details such as setting the remote environment could be
moved to a central location. These things are no longer the concern of whoever
is wishing to run a remote process.

Change-Id: I919260ee6e77a020ca47226a4a534e7b8398106f
Reviewed-by: hjk <hjk121@nokiamail.com>
Change-Id: Id1541f83f431171dbdd94d5dd48f93e1c2cdf6fb
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Calling fromLocal8Bit() for literals is wrong, since that depends
ont the user's environment. We use latin1 strings exclusively in Qt.

Change-Id: I0cd0986787ea630425773672d3a892fbd0f0a77a
Reviewed-by: hjk <hjk121@nokiamail.com>
So far we ignored crashes and unexpected exits of the remote SFTP
service under the assumption that the SSH server would catch these
itself and act accordingly. This is not the case, however: OpenSSH,
for instance, does not even realize if its sftp-server binary is
not present at all. As a result, Qt Creator waits indefinitely for
an SFTP operation to finish. Now we emit an error and close the
offending channel.

Task-number: QTCREATORBUG-10339
Change-Id: I132ed4a0098434a4cfce6056b964bd6363951fd7
Reviewed-by: Volker Vogelhuber <wiendl@web.de>
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Change-Id: Ib608bb49e26781aef1914085a5d801fcdcd5eb56
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Change-Id: I3a1803cc57050c6fb90c5d143ffb2d4e98765be3
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Change-Id: I2f90c8ae7b5e968b9de882833f8661ab540a9232
Reviewed-by: hjk <hjk121@nokiamail.com>
The statement in the RFC was misunderstood.

Task-number: QTCREATORBUG-12884
Change-Id: Icd533362ebf95d963cacc8d11da03360e742f070
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Channel exit is completely normal if we closed the channel, so this must
not cause an error message.

Change-Id: I57f5165b339a52a25118ad5e357f41334dadebc4
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
New OpenSSH versions do not support the (required) CBC modes out of the
box anymore, so let's add some CTR ones.

Task-number: QTCREATORBUG-13340
Change-Id: Ia3e38be3aab95be258e64396283736d246c8b93b
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
This can be triggered rather quickly by clicking "Run" for a short-
lived application on a QNX device. The state in this situation is
QSsh::Internal::AbstractSshChannel::SessionRequested.

Change-Id: I4447b85a4e8d6ba63e30f3783d29bb0c816e0dff
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
- It is not an error if the server replies to one of our earlier
  requests while we are in closing state. This can happen if we
  close the channel shortly after sending the other request.
- Also change the message itself, which could be interpreted as
  "packet corrupt" when we actually meant "packet unexpected".

Change-Id: I735c67b2a9b41af0c5e0b8d229369d94ec37277c
Reviewed-by: hjk <hjk121@nokiamail.com>
... and connect it using Qt5-style connects.

Change-Id: Ic7f36949b38d4773f5ac0f04853abf93bebcf467
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
If closeChannel() is called in between our channel open request to the
server and the corresponding reply, we cannot forward the close request
to the server, as we don't have its channel id yet. So wait until we do.

Our failure to correctly handle this sequence of events was the root cause
for the following user-visible errors:
    - A (since-removed) Q_ASSERT in ~SshRemoteProcess() was hit.
    - The server closed the connection because we referred to an invalid
      channel ("Received ieof for nonexistent channel -1").

Commits 26920307f0 and 3027bcc952 are also related to this issue.

Change-Id: I4994d85f5b21a72682f75389cdf8769738bd6768
Reviewed-by: hjk <hjk121@nokiamail.com>
Change-Id: Ic537fd123478a4f8fe4e54736d444fa64fd62d9c
Reviewed-by: hjk <hjk121@nokiamail.com>
Change-Id: I5f10bd801bb5cf43e58193c41e62d9ea2f9cb645
Task-number: QTCREATORBUG-13339
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
We keep connections open to avoid re-doing the authentication procedure
when the user runs or deploys a remote app repeatedly.
However, the connections should not be around indefinitely; we therefore
now close them after about five minutes of inactivity.

Change-Id: Ie677eb133b618d34c08528da2f2bc221472316b3
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Probably just a thinko in the original code.

Change-Id: Ie089737a3501c5aede9a2234c10e4f1c1611d952
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Change-Id: I9cdfa51dadf1014ee21a37ed97f4c543eb5c8fbb
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Change-Id: I84834f37dd15108ed8c5fbf5353bcabc4e564f70
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
mardy and others added 3 commits April 14, 2018 14:55
The Botan library ships a pkg-config file, which helps finding where the
library has been installed.

This commit does not remove the previously hardcoded paths, in order to
keep compatibility for existing users of the library.
@CJSmith-0141
Copy link

+1, this fixes many bugs with Qt5

sandsmark and others added 26 commits October 28, 2018 17:58
We claimed to support the diffie-hellman-group14-sha1 protocol, but
forgot to actually handle it.

Change-Id: I3193997d7270328700486a15a6281ebf8528ed56
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
upstream commit:

  commit 1c6c64df2058cb8f2a06fce1a4ffa5476a80b762
  Author: Christian Kandeler <christian.kandeler@qt.io>
  Date:   Tue Oct 16 17:38:12 2018 +0200

      SSH: Turn some manual tests into autotests

      Change-Id: Id098709ff74dfc31a26ef42d559ce35d0120c0c3
      Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
There is no minimum requirement for the per-channel maximum packet size.

Change-Id: Iced6e3bb1b77f7642d39d4a113ab4236af6b247b
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
There are other "channel open" requests than the one for forwarded TCP/
IP. Factor out the generic parts.

Change-Id: I593a9a075d87d57850697459ab0814c07b75c4d4
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Change-Id: Ia7b15e784cb098bc7c6c6be2748d772192187e97
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This format has been around for a while, but with release 7.8 has become
the default for all keys generated by ssh-keygen.

Change-Id: I0d8f666996832de49aad4f6bd246a5ed820df6cd
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
The SshX11InfoRetriever object must not be allocated on the stack, and
the failure signal was potentially emitted too early for the test to
catch it.

Change-Id: Iac53546deee183c8f02bafdcc11a7910f3e392c0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet