[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#924601: marked as done (unblock: remmina/1.3.3+dfsg-2)



Your message dated Fri, 15 Mar 2019 18:16:40 +0000
with message-id <E1h4rNo-0006I2-N7@respighi.debian.org>
and subject line unblock remmina
has caused the Debian Bug report #924601,
regarding unblock: remmina/1.3.3+dfsg-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
924601: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=924601
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package remmina

Version 1.3.3+dfsg-2 (now in unstable/sid) aims to fix a particular
issue introduced in former 1.3.3+dfsg-1 revision about SSH plugin
failing to work properly if a public key is not provided.

Upstream noticed this and via #924319 requested a new upload to fix the
problem, providing a simple patch to achieve it. The main rationale for
this change is explained in the bug report above.

Attached, you'll find a debdiff for 1.3.3+dfsg-1 -> 1.3.3+dfsg-2.

unblock remmina/1.3.3+dfsg-2

-- System Information:
Debian Release: buster/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'buildd-unstable'), (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-3-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

diff -Nru remmina-1.3.3+dfsg/debian/changelog remmina-1.3.3+dfsg/debian/changelog
--- remmina-1.3.3+dfsg/debian/changelog	2019-02-28 22:39:06.000000000 +0100
+++ remmina-1.3.3+dfsg/debian/changelog	2019-03-12 20:51:31.000000000 +0100
@@ -1,3 +1,10 @@
+remmina (1.3.3+dfsg-2) unstable; urgency=medium
+
+  * debian/patches/: patchset updated
+    - 01-SSH_fix.patch added (Closes: #924319)
+
+ -- Matteo F. Vescovi <mfv@debian.org>  Tue, 12 Mar 2019 20:51:31 +0100
+
 remmina (1.3.3+dfsg-1) unstable; urgency=medium
 
   * New upstream release
diff -Nru remmina-1.3.3+dfsg/debian/patches/01-SSH_fix.patch remmina-1.3.3+dfsg/debian/patches/01-SSH_fix.patch
--- remmina-1.3.3+dfsg/debian/patches/01-SSH_fix.patch	1970-01-01 01:00:00.000000000 +0100
+++ remmina-1.3.3+dfsg/debian/patches/01-SSH_fix.patch	2019-03-12 20:46:20.000000000 +0100
@@ -0,0 +1,165 @@
+Description: SSH plugin not working if pubkey is not supplied
+Author: Antenore Gatta <antenore@remmina.org>
+Bug: https://gitlab.com/Remmina/Remmina/issues/1850
+Bug-Debian: https://bugs.debian.org/924319
+Date: 2019-03-11
+
+diff --git a/src/remmina_sftp_client.c b/src/remmina_sftp_client.c
+index 0f43f2b3..3540e1c1 100644
+--- a/src/remmina_sftp_client.c
++++ b/src/remmina_sftp_client.c
+@@ -507,7 +507,7 @@ remmina_sftp_client_thread_main(gpointer data)
+ 		if (!sftp) {
+ 			sftp = remmina_sftp_new_from_ssh(REMMINA_SSH(client->sftp));
+ 			if (!remmina_ssh_init_session(REMMINA_SSH(sftp)) ||
+-			    remmina_ssh_auth(REMMINA_SSH(sftp), NULL) <= 0 ||
++			    remmina_ssh_auth(REMMINA_SSH(sftp), NULL, NULL, NULL) <= 0 ||
+ 			    !remmina_sftp_open(sftp)) {
+ 				remmina_sftp_client_thread_set_error(client, task, (REMMINA_SSH(sftp))->error);
+ 				remmina_ftp_task_free(task);
+@@ -980,7 +980,7 @@ remmina_sftp_client_new_init(RemminaSFTP *sftp)
+ 	gdk_display_flush(display);
+ 
+ 	if (!remmina_ssh_init_session(REMMINA_SSH(sftp)) ||
+-	    remmina_ssh_auth(REMMINA_SSH(sftp), NULL) <= 0 ||
++	    remmina_ssh_auth(REMMINA_SSH(sftp), NULL, NULL, NULL) <= 0 ||
+ 	    !remmina_sftp_open(sftp)) {
+ 		dialog = gtk_message_dialog_new(GTK_WINDOW(gtk_widget_get_toplevel(client)),
+ 			GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+diff --git a/src/remmina_sftp_plugin.c b/src/remmina_sftp_plugin.c
+index af55c4cf..08994ac1 100644
+--- a/src/remmina_sftp_plugin.c
++++ b/src/remmina_sftp_plugin.c
+@@ -135,7 +135,7 @@ remmina_plugin_sftp_main_thread(gpointer data)
+ 		/* Create SFTP connection based on existing SSH session */
+ 		sftp = remmina_sftp_new_from_ssh(ssh);
+ 		if (remmina_ssh_init_session(REMMINA_SSH(sftp)) &&
+-		    remmina_ssh_auth(REMMINA_SSH(sftp), NULL) > 0 &&
++		    remmina_ssh_auth(REMMINA_SSH(sftp), NULL, gp, remminafile) > 0 &&
+ 		    remmina_sftp_open(sftp)) {
+ 			cont = TRUE;
+ 		}
+diff --git a/src/remmina_ssh.c b/src/remmina_ssh.c
+index 9e6ba2a8..851d4446 100644
+--- a/src/remmina_ssh.c
++++ b/src/remmina_ssh.c
+@@ -229,13 +229,16 @@ remmina_ssh_auth_pubkey(RemminaSSH *ssh)
+ 
+ 	g_snprintf (pubkey, sizeof(pubkey), "%s.pub", ssh->privkeyfile);
+ 
+-	ret = ssh_pki_import_pubkey_file( pubkey, &key);
+-	if (ret != SSH_OK) {
+-		remmina_ssh_set_error(ssh, _("SSH public key cannot be imported: %s"));
+-		return 0;
++	/*G_FILE_TEST_EXISTS*/
++	if (g_file_test(pubkey, G_FILE_TEST_EXISTS)) {
++		ret = ssh_pki_import_pubkey_file(pubkey, &key);
++		if (ret != SSH_OK) {
++			remmina_ssh_set_error(ssh, _("SSH public key cannot be imported: %s"));
++			return 0;
++		}
++		ssh_key_free(key);
+ 	}
+ 
+-	ssh_key_free(key);
+ 
+ 	if ( ssh_pki_import_privkey_file( ssh->privkeyfile, (ssh->passphrase ? ssh->passphrase : ""),
+ 		NULL, NULL, &key ) != SSH_OK ) {
+@@ -258,10 +261,33 @@ remmina_ssh_auth_pubkey(RemminaSSH *ssh)
+ }
+ 
+ static gint
+-remmina_ssh_auth_auto_pubkey(RemminaSSH* ssh)
++remmina_ssh_auth_auto_pubkey(RemminaSSH *ssh, RemminaProtocolWidget *gp, RemminaFile *remminafile)
+ {
+ 	TRACE_CALL(__func__);
+-	gint ret = ssh_userauth_publickey_auto(ssh->session, NULL, ssh->passphrase);
++
++	gboolean disablepasswordstoring;
++	gboolean save_password;
++	gchar *pwd;
++	gchar *pwdtype = "ssh_passphrase";
++	gint ret;
++
++	if (!ssh->passphrase) {
++		disablepasswordstoring = remmina_file_get_int(remminafile, "disablepasswordstoring", FALSE);
++		ret = remmina_protocol_widget_panel_authpwd(gp, REMMINA_AUTHPWD_TYPE_SSH_PRIVKEY, !disablepasswordstoring);
++		save_password = remmina_protocol_widget_get_savepassword(gp);
++
++		if (ret == GTK_RESPONSE_OK) {
++			if (save_password) {
++				pwd = remmina_protocol_widget_get_password(gp);
++				remmina_file_set_string(remminafile, pwdtype, pwd);
++				g_free(pwd);
++			}
++		} else {
++			return -1;
++		}
++		ssh->passphrase = remmina_protocol_widget_get_password(gp);
++	}
++	ret = ssh_userauth_publickey_auto(ssh->session, NULL, ssh->passphrase);
+ 
+ 	if (ret != SSH_AUTH_SUCCESS) {
+ 		remmina_ssh_set_error(ssh, _("SSH automatic public key authentication failed: %s"));
+@@ -308,7 +334,7 @@ remmina_ssh_auth_gssapi(RemminaSSH *ssh)
+ }
+ 
+ gint
+-remmina_ssh_auth(RemminaSSH *ssh, const gchar *password)
++remmina_ssh_auth(RemminaSSH *ssh, const gchar *password, RemminaProtocolWidget *gp, RemminaFile *remminafile)
+ {
+ 	TRACE_CALL(__func__);
+ 	gint method;
+@@ -359,7 +385,7 @@ remmina_ssh_auth(RemminaSSH *ssh, const gchar *password)
+ 
+ 	case SSH_AUTH_AUTO_PUBLICKEY:
+ 		/* ssh_agent or none */
+-		return remmina_ssh_auth_auto_pubkey(ssh);
++		return remmina_ssh_auth_auto_pubkey(ssh, gp, remminafile);
+ 
+ #if 0
+ 	/* Not yet supported by libssh */
+@@ -472,7 +498,7 @@ remmina_ssh_auth_gui(RemminaSSH *ssh, RemminaProtocolWidget *gp, RemminaFile *re
+ 		return FALSE;
+ 	}
+ 	/* Try empty password or existing password/passphrase first */
+-	ret = remmina_ssh_auth(ssh, remmina_file_get_string(remminafile, pwdtype));
++	ret = remmina_ssh_auth(ssh, remmina_file_get_string(remminafile, pwdtype), gp, remminafile);
+ 	if (ret > 0) return 1;
+ 
+ 	/* Requested for a non-empty password */
+@@ -499,7 +525,7 @@ remmina_ssh_auth_gui(RemminaSSH *ssh, RemminaProtocolWidget *gp, RemminaFile *re
+ 			return -1;
+ 		}
+ 		pwd = remmina_protocol_widget_get_password(gp);
+-		ret = remmina_ssh_auth(ssh, pwd);
++		ret = remmina_ssh_auth(ssh, pwd, gp, remminafile);
+ 		g_free(pwd);
+ 	}
+ 
+diff --git a/src/remmina_ssh.h b/src/remmina_ssh.h
+index ec97bd43..29d7e930 100644
+--- a/src/remmina_ssh.h
++++ b/src/remmina_ssh.h
+@@ -96,7 +96,7 @@ gboolean remmina_ssh_init_session(RemminaSSH *ssh);
+ 
+ /* Authenticate SSH session */
+ /* -1: Require password; 0: Failed; 1: Succeeded */
+-gint remmina_ssh_auth(RemminaSSH *ssh, const gchar *password);
++gint remmina_ssh_auth(RemminaSSH *ssh, const gchar *password, RemminaProtocolWidget *gp, RemminaFile *remminafile);
+ 
+ /* -1: Cancelled; 0: Failed; 1: Succeeded */
+ gint remmina_ssh_auth_gui(RemminaSSH *ssh, RemminaProtocolWidget *gp, RemminaFile *remminafile);
+diff --git a/src/remmina_ssh_plugin.c b/src/remmina_ssh_plugin.c
+index 3bdfef22..8f9bc4ba 100644
+--- a/src/remmina_ssh_plugin.c
++++ b/src/remmina_ssh_plugin.c
+@@ -289,7 +289,7 @@ remmina_plugin_ssh_main_thread(gpointer data)
+ 		/* Create SSH Shell connection based on existing SSH session */
+ 		shell = remmina_ssh_shell_new_from_ssh(ssh);
+ 		if (remmina_ssh_init_session(REMMINA_SSH(shell)) &&
+-		    remmina_ssh_auth(REMMINA_SSH(shell), NULL) > 0 &&
++		    remmina_ssh_auth(REMMINA_SSH(shell), NULL, gp, remminafile) > 0 &&
+ 		    remmina_ssh_shell_open(shell, (RemminaSSHExitFunc)
+ 			    remmina_plugin_service->protocol_plugin_close_connection, gp)) {
+ 			cont = TRUE;
diff -Nru remmina-1.3.3+dfsg/debian/patches/series remmina-1.3.3+dfsg/debian/patches/series
--- remmina-1.3.3+dfsg/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ remmina-1.3.3+dfsg/debian/patches/series	2019-03-11 20:31:12.000000000 +0100
@@ -0,0 +1 @@
+01-SSH_fix.patch
-- 
Matteo F. Vescovi

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
Unblocked remmina.

--- End Message ---

Reply to: