From 56fa88a823796a3d851599cb542425b4c9882dbe Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Mon, 3 Nov 1997 06:12:14 +0000 Subject: [PATCH] (kerberos4_is): send the peer address to krb_rd_req git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3762 ec53bebd-3082-4978-b11e-865c3cabbd6b --- appl/telnet/libtelnet/kerberos.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/appl/telnet/libtelnet/kerberos.c b/appl/telnet/libtelnet/kerberos.c index d7686d9e2..3128b93c6 100644 --- a/appl/telnet/libtelnet/kerberos.c +++ b/appl/telnet/libtelnet/kerberos.c @@ -267,9 +267,11 @@ kerberos4_send_oneway(Authenticator *ap) void kerberos4_is(Authenticator *ap, unsigned char *data, int cnt) { + struct sockaddr_in addr; char realm[REALM_SZ]; char instance[INST_SZ]; int r; + int addr_len; if (cnt-- < 1) return; @@ -290,8 +292,16 @@ kerberos4_is(Authenticator *ap, unsigned char *data, int cnt) printf("\r\n"); } k_getsockinst(0, instance, sizeof(instance)); + addr_len = sizeof(addr); + if(getpeername(0, (struct sockaddr *)&addr, &addr_len) < 0) { + if(auth_debug_mode) + printf("getpeername failed\r\n"); + Data(ap, KRB_REJECT, "getpeername failed", -1); + auth_finished(ap, AUTH_REJECT); + return; + } r = krb_rd_req(&auth, KRB_SERVICE_NAME, - instance, 0, &adat, ""); + instance, addr.sin_addr.s_addr, &adat, ""); if (r) { if (auth_debug_mode) printf("Kerberos failed him as %s\r\n", name);