summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2021-10-08 10:35:10 +0200
committerOndrej Holy <oholy@redhat.com>2021-10-26 06:54:34 +0000
commit15bf21e5dd2532ebf98400bd128e78d5bbd17938 (patch)
tree9903e1d6c7f3bc481a7fdbda87d171eb9ff97f41
parent0a645cba3f0c03653118b61d4500780deefe96b5 (diff)
downloadgvfs-15bf21e5dd2532ebf98400bd128e78d5bbd17938.tar.gz
sftp: Adapt on new OpenSSH password prompts
SFTP backend fails when connecting with the "Timed out when logging in" error with the recent OpenSSH versions. This is because their password prompts are now prefixed by the `(user@host)` string, which breaks our `g_str_has_prefix` checks. Let's use `strstr` instead to fix this issue and also to not break compatibility with old versions and other vendors. Fixes: https://gitlab.gnome.org/GNOME/gvfs/-/issues/584
-rw-r--r--daemon/gvfsbackendsftp.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/daemon/gvfsbackendsftp.c b/daemon/gvfsbackendsftp.c
index 61c20a39..7649b882 100644
--- a/daemon/gvfsbackendsftp.c
+++ b/daemon/gvfsbackendsftp.c
@@ -1106,10 +1106,10 @@ handle_login (GVfsBackend *backend,
if (g_str_has_suffix (buffer, "password: ") ||
g_str_has_suffix (buffer, "Password: ") ||
g_str_has_suffix (buffer, "Password:") ||
- g_str_has_prefix (buffer, "Password for ") ||
- g_str_has_prefix (buffer, "Enter Kerberos password") ||
- g_str_has_prefix (buffer, "Enter passphrase for key") ||
- g_str_has_prefix (buffer, "Enter PASSCODE"))
+ strstr (buffer, "Password for ") ||
+ strstr (buffer, "Enter Kerberos password") ||
+ strstr (buffer, "Enter passphrase for key") ||
+ strstr (buffer, "Enter PASSCODE"))
{
gboolean aborted = FALSE;
gsize bytes_written;
@@ -1265,8 +1265,8 @@ handle_login (GVfsBackend *backend,
break;
}
}
- else if (g_str_has_prefix (buffer, "Verification code") ||
- g_str_has_prefix (buffer, "One-time password"))
+ else if (strstr (buffer, "Verification code") ||
+ strstr (buffer, "One-time password"))
{
gchar *verification_code = NULL;
gboolean aborted = FALSE;