diff options
| author | Charles Hannum | 1996-11-21 20:47:59 +0000 |
|---|---|---|
| committer | Charles Hannum | 1996-11-21 20:47:59 +0000 |
| commit | 51a66525e85d89acfc8118f0d222fdccc40f361c (patch) | |
| tree | 332b5844683d5898de41aa6e13e5603cec2cbb9b /lib-src | |
| parent | 3aef7b4e6c6c08d3234ec2102f095708601d4ac7 (diff) | |
| download | emacs-51a66525e85d89acfc8118f0d222fdccc40f361c.tar.gz emacs-51a66525e85d89acfc8118f0d222fdccc40f361c.zip | |
gethostbyname() may return a pointer to static data, which is
overwritten deep inside krb_realmofhost(). Copy the host name to
avoid conflicts.
Diffstat (limited to 'lib-src')
| -rw-r--r-- | lib-src/pop.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib-src/pop.c b/lib-src/pop.c index 5657df5a5d0..c4d4c26e5ef 100644 --- a/lib-src/pop.c +++ b/lib-src/pop.c | |||
| @@ -1005,6 +1005,7 @@ socket_connection (host, flags) | |||
| 1005 | CREDENTIALS cred; | 1005 | CREDENTIALS cred; |
| 1006 | Key_schedule schedule; | 1006 | Key_schedule schedule; |
| 1007 | int rem; | 1007 | int rem; |
| 1008 | char *realhost; | ||
| 1008 | #endif /* KRB5 */ | 1009 | #endif /* KRB5 */ |
| 1009 | #endif /* KERBEROS */ | 1010 | #endif /* KERBEROS */ |
| 1010 | 1011 | ||
| @@ -1175,8 +1176,9 @@ socket_connection (host, flags) | |||
| 1175 | } | 1176 | } |
| 1176 | #else /* ! KRB5 */ | 1177 | #else /* ! KRB5 */ |
| 1177 | ticket = (KTEXT) malloc (sizeof (KTEXT_ST)); | 1178 | ticket = (KTEXT) malloc (sizeof (KTEXT_ST)); |
| 1178 | rem = krb_sendauth (0L, sock, ticket, "pop", hostent->h_name, | 1179 | realhost = strdup (hostent->h_name); |
| 1179 | (char *) krb_realmofhost (hostent->h_name), | 1180 | rem = krb_sendauth (0L, sock, ticket, "pop", realhost, |
| 1181 | (char *) krb_realmofhost (realhost), | ||
| 1180 | (unsigned long) 0, &msg_data, &cred, schedule, | 1182 | (unsigned long) 0, &msg_data, &cred, schedule, |
| 1181 | (struct sockaddr_in *) 0, | 1183 | (struct sockaddr_in *) 0, |
| 1182 | (struct sockaddr_in *) 0, | 1184 | (struct sockaddr_in *) 0, |