Add code to strdup the hostname from gethostbyname
authorTheodore Tso <tytso@mit.edu>
Tue, 9 Aug 1994 03:06:32 +0000 (03:06 +0000)
committerTheodore Tso <tytso@mit.edu>
Tue, 9 Aug 1994 03:06:32 +0000 (03:06 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4079 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/movemail/movemail.c

index 894773112243b3c52d5e48e0c6984e6874ab879f..9435d0a174de0797a2c96c86b11c091fd4bd489e 100644 (file)
@@ -535,6 +535,7 @@ char *host;
     krb5_principal client, server;
     krb5_error *err_ret = NULL;
     register char *cp;
+    char *hostname;
 #endif /* KRB5 */
 #endif /* KERBEROS */
     hp = gethostbyname(host);
@@ -544,6 +545,12 @@ char *host;
     }
 
 #ifdef KERBEROS
+    hostname = malloc(strlen(hp->h_name)+1);
+    if (!hostname) {
+           sprintf(ErrMsg, "Couldn't allocate space for hostname");
+           return(NOTOK);
+    }
+    strcpy(hostname, hp->h_name);
     sp = getservbyname(KPOP_SERVICE, "tcp");
 #else
     sp = getservbyname("pop", "tcp");
@@ -580,8 +587,8 @@ char *host;
 #ifdef KERBEROS
 #ifdef KRB4
     ticket = (KTEXT) malloc(sizeof(KTEXT_ST));
-    rem = krb_sendauth(0L, s, ticket, POP_SNAME, hp->h_name,
-                      (char *) krb_realmofhost(hp->h_name),
+    rem = krb_sendauth(0L, s, ticket, POP_SNAME, hostname,
+                      (char *) krb_realmofhost(hostname),
                       (unsigned long)0, &msg_data, &cred, schedule,
                       (struct sockaddr_in *)0,
                       (struct sockaddr_in *)0,
@@ -605,14 +612,7 @@ char *host;
        goto krb5error;
     }
 
-#if 0
-    /* lower-case to get name for "instance" part of service name */
-    for (cp = hp->h_name; *cp; cp++)
-       if (isupper(*cp))
-           *cp = tolower(*cp);
-#endif
-
-    if (retval = krb5_sname_to_principal(hp->h_name, POP_SNAME,
+    if (retval = krb5_sname_to_principal(hostname, POP_SNAME,
                                         KRB5_NT_SRV_HST, &server)) {
        goto krb5error;
     }
@@ -640,6 +640,7 @@ char *host;
        return(NOTOK);
     }
 #endif /* KRB5 */
+    free(hostname);
 #endif /* KERBEROS */
                       
     sfi = fdopen(s, "r");