openbsd-ports/x11/remmina/patches/patch-remmina_src_remmina_ssh_c
mpi b3690e672f Revert the commit that breaks remmina+ssh with OpenBSD servers and add
the URLs to the bugtracker.

ok ajacoutot@, jasper@ (maintainer)
2012-06-25 14:24:34 +00:00

94 lines
2.5 KiB
Plaintext

$OpenBSD: patch-remmina_src_remmina_ssh_c,v 1.2 2012/06/25 14:24:34 mpi Exp $
https://github.com/FreeRDP/Remmina/issues/59
Revert commit b79355b1b5ac695c052eac5a80cf63863f0a3c85 that brokes
Remmina with OpenBSD servers.
https://github.com/FreeRDP/Remmina/issues/73
Add support for openpty(3)
--- remmina/src/remmina_ssh.c.orig Fri Feb 10 19:54:23 2012
+++ remmina/src/remmina_ssh.c Sat Jun 23 17:56:39 2012
@@ -36,12 +36,12 @@
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
@@ -54,6 +54,9 @@
#ifdef HAVE_TERMIOS_H
#include <termios.h>
#endif
+#ifdef HAVE_UTIL_H
+#include <util.h>
+#endif
#include "remmina_public.h"
#include "remmina_log.h"
#include "remmina_ssh.h"
@@ -120,29 +123,11 @@ static gint
remmina_ssh_auth_password (RemminaSSH *ssh)
{
gint ret;
- gint authlist;
- gint n;
- gint i;
if (ssh->authenticated) return 1;
if (ssh->password == NULL) return -1;
- authlist = ssh_userauth_list (ssh->session, NULL);
- if (authlist & SSH_AUTH_METHOD_INTERACTIVE)
- {
- while ((ret = ssh_userauth_kbdint (ssh->session, NULL, NULL)) == SSH_AUTH_INFO)
- {
- n = ssh_userauth_kbdint_getnprompts (ssh->session);
- for (i = 0; i < n; i++)
- {
- ssh_userauth_kbdint_setanswer(ssh->session, i, ssh->password);
- }
- }
- }
- else
- {
- ret = ssh_userauth_password (ssh->session, NULL, ssh->password);
- }
+ ret = ssh_userauth_password (ssh->session, NULL, ssh->password);
if (ret != SSH_AUTH_SUCCESS)
{
remmina_ssh_set_error (ssh, _("SSH password authentication failed: %s"));
@@ -1430,8 +1415,9 @@ remmina_ssh_shell_thread (gpointer data)
gboolean
remmina_ssh_shell_open (RemminaSSHShell *shell, RemminaSSHExitFunc exit_callback, gpointer data)
{
- gchar *slavedevice;
struct termios stermios;
+#if defined(HAVE_UNIX98_PTY)
+ gchar *slavedevice;
shell->master = posix_openpt (O_RDWR | O_NOCTTY);
if (shell->master == -1 ||
@@ -1439,6 +1425,11 @@ remmina_ssh_shell_open (RemminaSSHShell *shell, Remmin
unlockpt (shell->master) == -1 ||
(slavedevice = ptsname (shell->master)) == NULL ||
(shell->slave = open (slavedevice, O_RDWR | O_NOCTTY)) < 0)
+#elif defined(HAVE_OPENPTY)
+ if (openpty(&shell->master, &shell->slave, NULL, NULL, NULL))
+#else
+#error Have neither UNIX98 PTY nor BSD openpty!
+#endif
{
REMMINA_SSH (shell)->error = g_strdup ("Failed to create pty device.");
return FALSE;