This is an automated email from the ASF dual-hosted git repository. twolf pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
commit fc03c20c28da5833b8d46d9680a5da57de61dfae Author: Thomas Wolf <tw...@apache.org> AuthorDate: Sat Oct 23 21:01:35 2021 +0200 [SSHD-1218] Handle null SshAgent Don't require a non-null result from SshAgentFactory.createClient(). Instead simply treat this case as if there was no SSH agent. This way, an SshAgentFactory can return null if for a particular session no communication with the SSH agent shall be done. --- sshd-core/src/main/java/org/apache/sshd/agent/SshAgentFactory.java | 2 +- .../apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentFactory.java b/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentFactory.java index a0e6fe2..a528d58 100644 --- a/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentFactory.java +++ b/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentFactory.java @@ -45,7 +45,7 @@ public interface SshAgentFactory { * * @param session the {@link Session} the {@link SshAgent} is to be created for; may be {@code null} * @param manager The {@link FactoryManager} instance - * @return The {@link SshAgent} instance + * @return The {@link SshAgent} instance, or {@code null} if no SSH agent shall be used * @throws IOException If failed to create the client */ SshAgent createClient(Session session, FactoryManager manager) throws IOException; diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java index 09555f1..970aa7d 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java @@ -147,7 +147,10 @@ public class UserAuthPublicKeyIterator extends AbstractKeyPairIterator<PublicKey return null; } - agent = Objects.requireNonNull(factory.createClient(session, manager), "No agent created"); + agent = factory.createClient(session, manager); + if (agent == null) { + return null; + } return new Iterable<KeyAgentIdentity>() { @SuppressWarnings("synthetic-access") private final Iterable<? extends Map.Entry<PublicKey, String>> agentIds = agent.getIdentities();