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

Avoid type errors when public key is not retrieved #1446

Merged
merged 1 commit into from Apr 14, 2022

Conversation

lcobucci
Copy link
Contributor

@lcobucci lcobucci commented Apr 14, 2022

When dealing with unstable connections, phpseclib may return false when retrieving the public key. That causes null to be passed down to base64_decode() and triggers a TypeError due to strict types.

This exits early, preventing triggering the problem.
However, testing is a bit tricky since we need an unstable connection (or stub things).

When dealing with unstable connections, phpseclib may return `false`
when retrieving the public key.  That causes `null` to be passed down to
`base64_decode()` and triggers a TypeError due to strict types.

This exits early, preventing triggering the problem. However, testing is
a bit tricky since we need an unstable connection.
$publicKey = $connection->getServerPublicHostKey();

if ($publicKey === false) {
throw UnableToEstablishAuthenticityOfHost::becauseTheAuthenticityCantBeEstablished($this->host);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel bad about not providing any tests here (which would have caught the issue).
Having this method private and always instantiating SFTP make it slightly difficult to inject a stubbed connection to make sure we cover this behaviour.

Would love having ideas that don't involve using something like https://github.com/shopify/toxiproxy to mess up with the connection we use for tests.

@frankdejonge frankdejonge merged commit f50ef28 into thephpleague:2.x Apr 14, 2022
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

2 participants