summaryrefslogtreecommitdiff
path: root/clientloop.c
diff options
context:
space:
mode:
authorSimon Wilkinson <simon@sxw.org.uk>2014-02-09 16:09:48 +0000
committerColin Watson <cjwatson@debian.org>2020-10-18 12:04:32 +0100
commitd1b7918f9bce6e997c7952ac795e18d09192b2a6 (patch)
tree897785ddb933a151a3d4b7f7d1b6542aee570b76 /clientloop.c
parent2b2c99658e3e8ed452e28f88f9cdbcdfb2a461cb (diff)
GSSAPI key exchange support
This patch has been rejected upstream: "None of the OpenSSH developers are in favour of adding this, and this situation has not changed for several years. This is not a slight on Simon's patch, which is of fine quality, but just that a) we don't trust GSSAPI implementations that much and b) we don't like adding new KEX since they are pre-auth attack surface. This one is particularly scary, since it requires hooks out to typically root-owned system resources." However, quite a lot of people rely on this in Debian, and it's better to have it merged into the main openssh package rather than having separate -krb5 packages (as we used to have). It seems to have a generally good security history. Author: Simon Wilkinson <simon@sxw.org.uk> Author: Colin Watson <cjwatson@debian.org> Author: Jakub Jelen <jjelen@redhat.com> Origin: other, https://github.com/openssh-gsskex/openssh-gsskex/commits/debian/master Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1242 Last-Updated: 2020-06-07 Patch-Name: gssapi.patch
Diffstat (limited to 'clientloop.c')
-rw-r--r--clientloop.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/clientloop.c b/clientloop.c
index 60b46d161..2cebea29f 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -112,6 +112,10 @@
112#include "ssherr.h" 112#include "ssherr.h"
113#include "hostfile.h" 113#include "hostfile.h"
114 114
115#ifdef GSSAPI
116#include "ssh-gss.h"
117#endif
118
115/* import options */ 119/* import options */
116extern Options options; 120extern Options options;
117 121
@@ -1368,9 +1372,18 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
1368 break; 1372 break;
1369 1373
1370 /* Do channel operations unless rekeying in progress. */ 1374 /* Do channel operations unless rekeying in progress. */
1371 if (!ssh_packet_is_rekeying(ssh)) 1375 if (!ssh_packet_is_rekeying(ssh)) {
1372 channel_after_select(ssh, readset, writeset); 1376 channel_after_select(ssh, readset, writeset);
1373 1377
1378#ifdef GSSAPI
1379 if (options.gss_renewal_rekey &&
1380 ssh_gssapi_credentials_updated(NULL)) {
1381 debug("credentials updated - forcing rekey");
1382 need_rekeying = 1;
1383 }
1384#endif
1385 }
1386
1374 /* Buffer input from the connection. */ 1387 /* Buffer input from the connection. */
1375 client_process_net_input(ssh, readset); 1388 client_process_net_input(ssh, readset);
1376 1389