[12873] in Athena Bugs
MH memory handling bug
daemon@ATHENA.MIT.EDU (ghudson@MIT.EDU)
Fri Nov 11 12:37:39 1994
From: ghudson@MIT.EDU
Date: Fri, 11 Nov 94 12:37:20 -0500
To: bugs@MIT.EDU
Cc: linux-dev@MIT.EDU
zotnet/mts/client.c calls krb_sendauth() and krb_realmofhost() with a
pointer to static data in a hostent structure. Since krb_sendauth()
may make calls to gethostbyname() and gethostbyaddr(), this causes
problems. This shows up under Linux, and probably on other platforms
if you do reverse resolution in the Kerberos library. Here is a
patch:
*** /afs/dev/source/src/third/supported/mh.6.8/zotnet/mts/client.c Fri Jan 29 23:41:47 1993
--- client.c Fri Nov 11 12:30:59 1994
***************
*** 253,265 ****
#ifdef KPOP
if (kservice) { /* "pop" */
ticket = (KTEXT)malloc( sizeof(KTEXT_ST) );
! rem = krb_sendauth(0L, sd, ticket, kservice, hp->h_name,
! (char *) krb_realmofhost(hp->h_name),
(unsigned long)0, &msg_data, &cred, schedule,
(struct sockaddr_in *)NULL,
(struct sockaddr_in *)NULL,
"KPOPV0.1");
if (rem != KSUCCESS) {
close(sd);
(void) strcpy(response, "Post office refused connection: ");
--- 253,269 ----
#ifdef KPOP
if (kservice) { /* "pop" */
+ char *host_save;
+ host_save = malloc(strlen(hp->h_name));
+ strcpy(host_save, hp->h_name);
ticket = (KTEXT)malloc( sizeof(KTEXT_ST) );
! rem = krb_sendauth(0L, sd, ticket, kservice, host_save,
! (char *) krb_realmofhost(host_save),
(unsigned long)0, &msg_data, &cred, schedule,
(struct sockaddr_in *)NULL,
(struct sockaddr_in *)NULL,
"KPOPV0.1");
+ free(host_save);
if (rem != KSUCCESS) {
close(sd);
(void) strcpy(response, "Post office refused connection: ");