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;
