diff options
-rwxr-xr-x | src/kadmin/testing/scripts/make-host-keytab.plin | 4 | ||||
-rwxr-xr-x | src/kadmin/testing/scripts/qualname.plin | 5 | ||||
-rw-r--r-- | src/tests/resolve/resolve.c | 29 |
3 files changed, 25 insertions, 13 deletions
diff --git a/src/kadmin/testing/scripts/make-host-keytab.plin b/src/kadmin/testing/scripts/make-host-keytab.plin index cf62ae797..dfe0b3a01 100755 --- a/src/kadmin/testing/scripts/make-host-keytab.plin +++ b/src/kadmin/testing/scripts/make-host-keytab.plin @@ -54,8 +54,8 @@ chop ($canonhost = `hostname`); ($canonhost,$aliases,$addrtype,$length,@addrs) = gethostbyname($canonhost); die "couldn't get canonical hostname\n" if !($canonhost && @addrs); -($canonhost) = gethostbyaddr($addrs[0],$addrtype); -die "couldn't get canonical hostname\n" if (!$canonhost); +($canonhost2) = gethostbyaddr($addrs[0],$addrtype); +if ($canonhost2) { $canonhost = $canonhost2; } for (@princs) { s/xCANONHOSTx/$canonhost/g; diff --git a/src/kadmin/testing/scripts/qualname.plin b/src/kadmin/testing/scripts/qualname.plin index 883b7dfc8..b712d8973 100755 --- a/src/kadmin/testing/scripts/qualname.plin +++ b/src/kadmin/testing/scripts/qualname.plin @@ -6,13 +6,12 @@ if ($#ARGV == -1) { $hostname = $ARGV[0]; } -if (! (($type,$addr) = (gethostbyname($hostname))[2,4])) { +if (! (($name,$type,$addr) = (gethostbyname($hostname))[0,2,4])) { print STDERR "No such host: $hostname\n"; exit(1); } if (! ($qualname = (gethostbyaddr($addr,$type))[0])) { - print STDERR "No address information for host $hostname\n"; - exit(1); + $qualname = $name; } $qualname =~ tr/A-Z/a-z/; # lowercase our name for keytab use. diff --git a/src/tests/resolve/resolve.c b/src/tests/resolve/resolve.c index 6efd09786..282fba741 100644 --- a/src/tests/resolve/resolve.c +++ b/src/tests/resolve/resolve.c @@ -31,7 +31,7 @@ * domain name, then the resolve library is broken. * * Warning: It is possible to fool this program into thinking everything is - * alright byt a clever use of /etc/hosts - but this is better than nothing. + * alright by a clever use of /etc/hosts - but this is better than nothing. * * Usage: * resolve [hostname] @@ -79,7 +79,7 @@ main(argc, argv) char **argv; { char myname[MAXHOSTNAMELEN+1]; - char *ptr; + char *ptr, *fqdn; struct in_addr addrcopy; struct hostent *host; int quiet = 0; @@ -120,6 +120,12 @@ main(argc, argv) exit(2); } + fqdn = strdup(host->h_name); + if (fqdn == NULL) { + perror("strdup"); + exit(2); + } + ptr = host->h_addr_list[0]; #define UC(a) (((int)a)&0xff) if (!quiet) @@ -129,22 +135,29 @@ main(argc, argv) memcpy(&addrcopy.s_addr, ptr, 4); /* Convert back to full name */ - if((host = gethostbyaddr(&addrcopy.s_addr, 4, AF_INET)) == NULL) { - fprintf(stderr, "Error looking up IP address - fatal\n"); - exit(2); + if ((host = gethostbyaddr(&addrcopy.s_addr, 4, AF_INET)) == NULL) { + if (!quiet) + fprintf(stderr, "Error looking up IP address\n"); + } else { + free(fqdn); + fqdn = strdup(host->h_name); + if (fqdn == NULL) { + perror("strdup"); + exit (2); + } } if (quiet) - printf("%s\n", host->h_name); + printf("%s\n", fqdn); else - printf("FQDN: %s\n", host->h_name); + printf("FQDN: %s\n", fqdn); /* * The host name must have at least one '.' in the name, and * if there is only one '.', it must not be at the end of the * string. (i.e., "foo." is not a FQDN) */ - ptr = strchr(host->h_name, '.'); + ptr = strchr(fqdn, '.'); if (ptr == NULL || ptr[1] == '\0') { fprintf(stderr, "\nResolve library did not return a " |