Hello community,

here is the log from the commit of package mc for openSUSE:Factory checked in 
at 2018-07-06 10:37:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mc (Old)
 and      /work/SRC/openSUSE:Factory/.mc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mc"

Fri Jul  6 10:37:45 2018 rev:75 rq:620315 version:4.8.21

Changes:
--------
--- /work/SRC/openSUSE:Factory/mc/mc.changes    2018-06-13 15:15:49.032502492 
+0200
+++ /work/SRC/openSUSE:Factory/.mc.new/mc.changes       2018-07-06 
10:37:51.715549700 +0200
@@ -1,0 +2,8 @@
+Tue Jun 26 10:33:31 UTC 2018 - [email protected]
+
+- sftp_interactive_password.patch: Fixes logins to remote SSH
+  sessions where only Keyboard-Interactive password is available
+  and tunneled password is disabled (bsc#1098235)
+- mc-rpmlintrc: removed
+
+-------------------------------------------------------------------

Old:
----
  mc-rpmlintrc

New:
----
  sftp_interactive_password.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mc.spec ++++++
--- /var/tmp/diff_new_pack.AfbtqP/_old  2018-07-06 10:37:52.895548298 +0200
+++ /var/tmp/diff_new_pack.AfbtqP/_new  2018-07-06 10:37:52.899548293 +0200
@@ -28,7 +28,6 @@
 Source2:        %{name}.desktop
 Source3:        %{name}.png
 Source4:        cmake.syntax
-Source5:        mc-rpmlintrc
 Source6:        http://ftp.midnight-commander.org/%{name}-%{version}.sha256
 Patch0:         mc-fix_lib_search_path.patch
 Patch61:        mc-extd-misc.patch
@@ -62,6 +61,7 @@
 Patch60:        mc-startup-timeout.patch
 
 Patch100:       xls2csv_update.patch
+Patch101:       sftp_interactive_password.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  audiofile-devel
@@ -117,6 +117,7 @@
 %patch52 -p1
 %patch60 -p1
 %patch100 -p1
+%patch101 -p1
 
 %build
 autoreconf --force --install
@@ -172,7 +173,6 @@
 %verify_permissions -e %{_libexecdir}/mc/cons.saver
 
 %files
-%defattr(-, root, root)
 %doc ABOUT-NLS NEWS README
 %license COPYING
 %config %{_sysconfdir}/profile.d/*
@@ -211,7 +211,6 @@
 %{_datadir}/icons/hicolor/32x32/apps/%{name}.png
 
 %files lang -f %name.lang
-%defattr(-, root, root)
 %if 0%{?suse_version} < 1140 || 0%{?sles_version} && 0%{?sles_version} <= 11
 %lang(sv) %dir %{_datadir}/locale/sv_SE
 %lang(sv) %dir %{_datadir}/locale/sv_SE/LC_MESSAGES


++++++ sftp_interactive_password.patch ++++++
Upstream: https://midnight-commander.org/ticket/3921
Bugzilla: 1098235

commit 83e7624292232562639d13f76d84126e6779e54b
Author: Adam Majer <[email protected]>
Date:   Mon Jun 25 15:06:38 2018 +0200

    Ticket #3921: Enable keyboard interactive authentication
    
    If SSH server does not support cleartext tunneled password
    authentication and only 'keyboard interactive' authentication
    instead, then we need to use different authentication
    function along with a interactive callback.
    
    Signed-off-by: Adam Majer <[email protected]>

diff --git a/src/vfs/sftpfs/connection.c b/src/vfs/sftpfs/connection.c
index 537159129..19a49874f 100644
--- a/src/vfs/sftpfs/connection.c
+++ b/src/vfs/sftpfs/connection.c
@@ -292,6 +292,50 @@ sftpfs_open_connection_ssh_key (struct vfs_s_super *super, 
GError ** mcerror)
     return ret_value;
 }
 
+
+/**
+ * Keyboard-interactive password helper for opening connection to host by
+ * sftpfs_open_connection_ssh_password
+ *
+ * Uses global kbi_super (data with existing connection) and kbi_passwd 
(password)
+ *
+ * @param name             username
+ * @param name_len         length of @name
+ * @param instruction      unused
+ * @param instruction_len  unused
+ * @param num_prompts      number of possible problems to process
+ * @param prompts          array of prompts to process
+ * @param responses        array of responses, one per prompt
+ * @param abstract         unused
+ */
+
+static const char *kbi_passwd;
+static const struct vfs_s_super *kbi_super;
+static LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC(keyboard_interactive_helper)
+{
+    int i;
+    int len;
+
+    (void) instruction;
+    (void) instruction_len;
+    (void) abstract;
+
+    if (!kbi_super || !kbi_passwd)
+        return;
+
+    if (strncmp(name, kbi_super->path_element->user, name_len) != 0)
+        return;
+
+    // assume these are password prompts
+    len = strlen(kbi_passwd);
+    for (i=0; i<num_prompts; ++i) {
+        if (strncmp(prompts[i].text, "Password: ", prompts[i].length) == 0) {
+            responses[i].text = strdup(kbi_passwd);
+            responses[i].length = len;
+        }
+    }
+}
+
 /* 
---------------------------------------------------------------------------------------------
 */
 /**
  * Open connection to host using password.
@@ -323,6 +367,16 @@ sftpfs_open_connection_ssh_password (struct vfs_s_super 
*super, GError ** mcerro
                LIBSSH2_ERROR_EAGAIN);
         if (rc == 0)
             return TRUE;
+
+        kbi_super = super;
+        kbi_passwd = super->path_element->password;
+        while ((rc = libssh2_userauth_keyboard_interactive 
(super_data->session, super->path_element->user,
+                                                            
keyboard_interactive_helper)) ==
+               LIBSSH2_ERROR_EAGAIN);
+        kbi_super = NULL;
+        kbi_passwd = NULL;
+        if (rc == 0)
+            return TRUE;
     }
 
     p = g_strdup_printf (_("sftp: Enter password for %s "), 
super->path_element->user);
@@ -337,6 +391,17 @@ sftpfs_open_connection_ssh_password (struct vfs_s_super 
*super, GError ** mcerro
                                                 passwd)) == 
LIBSSH2_ERROR_EAGAIN)
             ;
 
+        if (rc != 0)
+        {
+            kbi_super = super;
+            kbi_passwd = passwd;
+            while ((rc = libssh2_userauth_keyboard_interactive 
(super_data->session, super->path_element->user,
+                                                                
keyboard_interactive_helper))
+                   == LIBSSH2_ERROR_EAGAIN);
+            kbi_super = NULL;
+            kbi_passwd = NULL;
+        }
+
         if (rc == 0)
         {
             ret_value = TRUE;

Reply via email to