summaryrefslogtreecommitdiffstats
path: root/src/tests/resolve
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2009-12-03 02:17:24 +0000
committerKen Raeburn <raeburn@mit.edu>2009-12-03 02:17:24 +0000
commitdf1f581ffeff2abb67ee4e6b6d4da13189b0d271 (patch)
treeb7713e25a993a889a30ad39e09801ee69936e23e /src/tests/resolve
parent78989785a51de5a0516f67600c41cc3b85a49799 (diff)
downloadkrb5-df1f581ffeff2abb67ee4e6b6d4da13189b0d271.tar.gz
krb5-df1f581ffeff2abb67ee4e6b6d4da13189b0d271.tar.xz
krb5-df1f581ffeff2abb67ee4e6b6d4da13189b0d271.zip
allow testing even if name->addr->name mapping doesn't work
Many of the tests are set up to fail if the local hostname can't be mapped to an address and back to a name again. If the name results in an address, and we can get a fully-qualified name or something that looks like it, though, we should be able to just go ahead and run some tests. This is also closer to the current behavior of sname_to_principal when reverse DNS is enabled. ticket: 6590 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@23439 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/tests/resolve')
-rw-r--r--src/tests/resolve/resolve.c29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/tests/resolve/resolve.c b/src/tests/resolve/resolve.c
index 6efd09786f..282fba7411 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 "