<pre style='margin:0'>
Mihai Moldovan (Ionic) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/63f472aef9a7c031d8ddb2ac29d0f7ed62599956">https://github.com/macports/macports-ports/commit/63f472aef9a7c031d8ddb2ac29d0f7ed62599956</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 63f472aef9a7c031d8ddb2ac29d0f7ed62599956
</span>Author: Mihai Moldovan <ionic@ionic.de>
AuthorDate: Wed Apr 24 02:01:23 2019 +0200

<span style='display:block; white-space:pre;color:#404040;'>    devel/libssh: update to 0.8.7.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Also add patch to make it play nice with old ssh-agent versions.
</span>---
 devel/libssh/Portfile                            |  11 +-
 devel/libssh/files/support-older-ssh-agent.patch | 216 +++++++++++++++++++++++
 2 files changed, 223 insertions(+), 4 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/libssh/Portfile b/devel/libssh/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 2dbb185..f698dff 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/libssh/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/libssh/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,13 +5,14 @@ PortGroup           cmake 1.1
</span> 
 name                libssh
 epoch               1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             0.8.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             0.8.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span> set major           [join [lrange [split ${version} .] 0 1] .]
 master_sites        https://www.libssh.org/files/${major}
 use_xz              yes
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  7f83581296ec7eee3165bb37a8a79a4cd906de22 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  1046b95632a07fc00b1ea70ee683072d0c8a23f544f4535440b727812002fd01 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    433680
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  b3a2c44cfcecac541b81d083b7ff8bc903313eba \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  43304ca22f0ba0b654e14b574a39816bc70212fdea5858a6637cc26cade3d592 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    430104
</span> 
 categories          devel security net
 platforms           darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -33,6 +34,8 @@ depends_build-append \
</span> depends_lib         path:lib/libssl.dylib:openssl \
                     port:zlib
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   support-older-ssh-agent.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> default_variants    +kerberos5
 
 post-extract {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/libssh/files/support-older-ssh-agent.patch b/devel/libssh/files/support-older-ssh-agent.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..6c27afb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/libssh/files/support-older-ssh-agent.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,216 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+commit 88e4a81c5f6fa930f7c343ee8db27ad880e61821
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Author: Mihai Moldovan <ionic@ionic.de>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date:   Sat Mar 30 13:33:29 2019 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    agent: fall back to SHA1-based RSA signatures.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    We automatically request a SHA2-based signature if the server supports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    it. Older versions of ssh-agent do not honor such flags and also don't
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    fail, but instead return a legacy (SHA1-based) signature.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    Check the type of signature that was returned (first nested SSH String
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    in the response), fail if it didn't match what was expected and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    re-execute ssh_userauth_agent_publickey() in fallback mode on signing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    errors with RSA-based keys, disabling usage of the SHA2 extensions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    We will also always re-enable SHA2-based signatures (both in success and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    error cases), since the agent is only queried once for initial
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    authentication. After that, we'll be able to use the stronger SHA2-based
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variants as usual.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    Signed-off-by: Mihai Moldovan <ionic@ionic.de>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/agent.c b/src/agent.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7704e8f1..bb65c5c5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/agent.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/agent.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -492,10 +492,13 @@ ssh_string ssh_agent_sign_data(ssh_session session,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ssh_buffer reply;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ssh_string key_blob;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ssh_string sig_blob;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ssh_string sig_type;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned int type = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned int flags = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     uint32_t dlen;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int memcmp_result = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const char *expected = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     request = ssh_buffer_new();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (request == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -600,6 +603,35 @@ ssh_string ssh_agent_sign_data(ssh_session session,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     sig_blob = ssh_buffer_get_ssh_string(reply);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ssh_buffer_free(reply);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* Check signature type for RSA keys. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if ((pubkey->type == SSH_KEYTYPE_RSA) && (sig_blob)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        expected = "ssh-rsa";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (session->extensions & SSH_EXT_SIG_RSA_SHA512) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            expected = "rsa-sha2-512";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        } else if (session->extensions & SSH_EXT_SIG_RSA_SHA256) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            expected = "rsa-sha2-256";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * Do *not* free sig_type!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * It's a reference to the nested ssh_string inside of sig_blob.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        sig_type = ssh_string_data(sig_blob);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (sig_type == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          SSH_STRING_FREE(sig_blob);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        memcmp_result = memcmp(expected, ssh_string_data(sig_type), MIN(strlen(expected), ssh_string_len(sig_type)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (memcmp_result != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          SSH_LOG(SSH_LOG_DEBUG, "expected signature type '%s', got '%s' from agent", expected, ssh_string_data(sig_type));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          SSH_STRING_FREE(sig_blob);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return sig_blob;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/auth.c b/src/auth.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 993e6dfe..9f7fc5ea 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/auth.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/auth.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -740,12 +740,15 @@ fail:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef _WIN32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int ssh_userauth_agent_publickey(ssh_session session,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                         const char *username,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                        ssh_key pubkey)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                        ssh_key pubkey,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                        int fallback)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ssh_string pubkey_s = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ssh_string sig_blob = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const char *sig_type_c = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int disabled_flags = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int rsa_ext_flags = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     switch(session->pending_call_state) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         case SSH_PENDING_CALL_NONE:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -771,6 +774,19 @@ static int ssh_userauth_agent_publickey(ssh_session session,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (rc < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         goto fail;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    rsa_ext_flags |= session->extensions & SSH_EXT_SIG_RSA_SHA512;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    rsa_ext_flags |= session->extensions & SSH_EXT_SIG_RSA_SHA256;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (fallback) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       * Agent only provides SHA1 signatures, so disable the SHA2-based variants.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       * Keep track of the current/old state and reapply it later if needed, though.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       * N.B.: fallback being set implicitly means that the key type must be RSA.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      disabled_flags = rsa_ext_flags;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      session->extensions &= ~SSH_EXT_SIG_RSA_SHA512;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      session->extensions &= ~SSH_EXT_SIG_RSA_SHA256;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     sig_type_c = ssh_key_get_signature_algorithm(session, pubkey->type);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* Check if the given public key algorithm is allowed */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -780,6 +796,7 @@ static int ssh_userauth_agent_publickey(ssh_session session,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       " PUBLICKEY_ACCEPTED_TYPES configuration option",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       sig_type_c);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         SSH_STRING_FREE(pubkey_s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        session->extensions |= disabled_flags;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return SSH_AUTH_DENIED;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -801,7 +818,12 @@ static int ssh_userauth_agent_publickey(ssh_session session,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* sign the buffer with the private key */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     sig_blob = ssh_pki_do_sign_agent(session, session->out_buffer, pubkey);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (sig_blob == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        goto fail;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (!fallback) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          goto retry_if_rsa;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          goto fail;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     rc = ssh_buffer_add_ssh_string(session->out_buffer, sig_blob);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -815,6 +837,7 @@ static int ssh_userauth_agent_publickey(ssh_session session,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     session->pending_call_state = SSH_PENDING_CALL_AUTH_AGENT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     rc = ssh_packet_send(session);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (rc == SSH_ERROR) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        session->extensions |= disabled_flags;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return SSH_AUTH_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -824,11 +847,50 @@ pending:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         session->pending_call_state = SSH_PENDING_CALL_NONE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* Reactivate SHA2-based signatures if needed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * We're only ever using the agent once (for each key) while authenticating,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * so don't disable stronger algorithms after the initial auth is done
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * (using a weaker, but at least supported one).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    session->extensions |= disabled_flags;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++retry_if_rsa:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ssh_buffer_reinit(session->out_buffer);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * Double-free of pubkey_s in fall-through mode to fail, but this is not
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * a problem, since the second free operation will just be a no-op thanks
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * to SSH_STRING_FREE().
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    SSH_STRING_FREE(pubkey_s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * We're explicitly checking if rsa_ext_flags is non-zero because
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * retrying doesn't make sense if there are no algos to disable in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * first place.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * In such a case, the code will use the implicit fall-through to fail.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if ((pubkey->type == SSH_KEYTYPE_RSA) && (rsa_ext_flags)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if (!fallback) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * Signature request failed, it might have been due to an unexpected signature.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * Let's retry with SHA2-based signatures disabled.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return ssh_userauth_agent_publickey(session, username, pubkey, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * Note the implicit fall-through to fail for non-RSA key types or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * retry-in-fallback-mode situations.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fail:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ssh_set_error_oom(session);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ssh_buffer_reinit(session->out_buffer);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     SSH_STRING_FREE(pubkey_s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    session->extensions |= disabled_flags;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return SSH_AUTH_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -941,7 +1003,7 @@ int ssh_userauth_agent(ssh_session session,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             state->state = SSH_AGENT_STATE_AUTH;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (state->state == SSH_AGENT_STATE_AUTH) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            rc = ssh_userauth_agent_publickey(session, username, state->pubkey);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            rc = ssh_userauth_agent_publickey(session, username, state->pubkey, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if (rc == SSH_AUTH_AGAIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 return rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             ssh_string_free_char(state->comment);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1313,7 +1375,7 @@ int ssh_userauth_agent_pubkey(ssh_session session,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     key->dsa = publickey->dsa_pub;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     key->rsa = publickey->rsa_pub;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    rc = ssh_userauth_agent_publickey(session, username, key);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    rc = ssh_userauth_agent_publickey(session, username, key, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     key->dsa = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     key->rsa = NULL;
</span></pre><pre style='margin:0'>

</pre>