From 51dbe41d6ee26122168da957d2c41209e78c0e9b Mon Sep 17 00:00:00 2001 From: Thomas Roessler Date: Wed, 3 Jan 2001 10:56:05 +0000 Subject: [PATCH] Set SASL_IP_{LOCAL,REMOTE} properties - needed for krb4 support; from yak@MIT.EDU. --- imap/auth_sasl.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/imap/auth_sasl.c b/imap/auth_sasl.c index d1c5c904..d1bc0d20 100644 --- a/imap/auth_sasl.c +++ b/imap/auth_sasl.c @@ -23,6 +23,9 @@ #include "imap_private.h" #include "auth.h" +#include +#include + #include #include @@ -53,6 +56,30 @@ imap_auth_res_t imap_auth_sasl (IMAP_DATA* idata) return IMAP_AUTH_FAILURE; } + /*** set sasl IP properties, necessary for use with krb4 ***/ + { + struct sockaddr_in local, remote; + int r, size; + + size = sizeof(local); + r = getsockname(idata->conn->fd, &local, &size); + if (r!=0) return IMAP_AUTH_FAILURE; + + size = sizeof(remote); + r = getpeername(idata->conn->fd, &remote, &size); + if (r!=0) return IMAP_AUTH_FAILURE; + +#ifdef SASL_IP_LOCAL + r = sasl_setprop(saslconn, SASL_IP_LOCAL, &local); + if (r!=0) return IMAP_AUTH_FAILURE; +#endif + +#ifdef SASL_IP_REMOTE + r = sasl_setprop(saslconn, SASL_IP_REMOTE, &remote); + if (r!=0) return IMAP_AUTH_FAILURE; +#endif + } + /* hack for SASL ANONYMOUS support: * 1. Fetch username. If it's "" or "anonymous" then * 2. attempt sasl_client_start with only "AUTH=ANONYMOUS" capability -- 2.40.0