[2141] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

Kerberos POP (popper and movemail) are busted

daemon@ATHENA.MIT.EDU (Ken Hornstein)
Mon Aug 12 00:01:57 1996

To: krb5-bugs@MIT.EDU
Date: Mon, 12 Aug 1996 00:01:38 -0400
From: Ken Hornstein <kenh@cmf.nrl.navy.mil>

------- =_aaaaaaaaaa0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <1113.839822449.1@cmf.nrl.navy.mil>

Both the Kerberos POP daemon and movemail in beta 6 are broken.  In the
pop daemon's case, it uses a variable called "ext_client" but never
initializes it; in movemail's case, it never initializes auth_context before
calling krb5_sendauth().

Here's a patch that fixes both.  BTW, I noticed that the patches for MH
that are included with the popper daemon are really dusty; is there interest
in an updated version of that patch?  I am going to do that myself ...

--Ken

------- =_aaaaaaaaaa0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <1113.839822449.2@cmf.nrl.navy.mil>
Content-Description: Patch to fix Kerberos POP

--- src/appl/popper/pop_init.c.orig	Sun Jun 11 02:20:30 1995
+++ src/appl/popper/pop_init.c	Sun Aug 11 23:33:11 1996
@@ -290,6 +290,7 @@
     krb5_auth_context auth_context = NULL;
     krb5_error_code retval;
     krb5_principal server;
+    krb5_ticket *ticket;
     int sock = 0;
 
     krb5_init_context(&pop_context);
@@ -309,7 +310,7 @@
 			       "KPOPV1.0", server,
 			       0, 	/* no flags */
 			       NULL,	/* default keytab */
-			       NULL	/* don't care about ticket */
+			       &ticket	/* need ticket for client name */
 			       )) {
 	pop_msg(p, POP_FAILURE, "recvauth failed--%s", error_message(retval));
 	pop_log(p, POP_WARNING, "%s: recvauth failed--%s",
@@ -318,6 +319,15 @@
     }
     krb5_free_principal(pop_context, server);
     krb5_auth_con_free(pop_context, auth_context);
+    if (retval = krb5_copy_principal(pop_context, ticket->enc_part2->client,
+				     &ext_client)) {
+	pop_msg(p, POP_FAILURE, "unable to copy principal--%s",
+		error_message(retval));
+	pop_msg(p, POP_FAILURE, "unable to copy principal (%s)",
+		inet_ntoa(addr->sin_addr));
+	exit(-1);
+    }
+    krb5_free_ticket(pop_context, ticket);
     if (retval = krb5_unparse_name(pop_context, ext_client, &client_name)) {
 	pop_msg(p, POP_FAILURE, "name not parsable--%s",
 		error_message(retval));
--- src/appl/movemail/movemail.c.orig	Sun Aug 11 23:44:10 1996
+++ src/appl/movemail/movemail.c	Sun Aug 11 23:45:02 1996
@@ -535,7 +535,7 @@
     krb5_context context;
     krb5_principal client, server;
     krb5_error *err_ret = NULL;
-    krb5_auth_context auth_context;
+    krb5_auth_context auth_context = NULL;
     char *hostname;
 #endif /* KRB5 */
 #endif /* KERBEROS */
@@ -628,6 +628,7 @@
 			   &err_ret, 0,
 			   NULL);	/* don't need reply */
     krb5_free_principal(context, server);
+    krb5_auth_con_free(context, auth_context);
     if (retval) {
 	if (err_ret && err_ret->text.length) {
 	    sprintf(Errmsg, "krb5 error: %s [server says '%*s'] ",

------- =_aaaaaaaaaa0--

home help back first fref pref prev next nref lref last post