X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=utils%2Fmountd%2Fcache.c;h=ef460f75c144fc164f776a66f903963fdeb4898a;hb=180238a295c1a8127953c96f0b462688d0f57a09;hp=b686318c1017b0dd951bdc95bab27348a6db0071;hpb=173ac3ccb45cc407336dd363fc15c90bbfdecf6f;p=nfs-utils.git diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c index b686318..ef460f7 100644 --- a/utils/mountd/cache.c +++ b/utils/mountd/cache.c @@ -76,6 +76,7 @@ void auth_unix_ip(FILE *f) char ipaddr[20]; char *client; struct in_addr addr; + struct hostent *he; if (readline(fileno(f), &lbuf, &lbuflen) != 1) return; @@ -94,7 +95,8 @@ void auth_unix_ip(FILE *f) auth_reload(); /* addr is a valid, interesting address, find the domain name... */ - client = client_compose(addr); + he = client_resolve(addr); + client = client_compose(he); qword_print(f, "nfsd"); @@ -105,7 +107,7 @@ void auth_unix_ip(FILE *f) qword_eol(f); if (client) free(client); - + free(he); } void auth_unix_gid(FILE *f) @@ -445,6 +447,8 @@ void nfsd_fh(FILE *f) if (!found) { found = &exp->m_export; found_path = strdup(path); + if (found_path == NULL) + goto out; } else if (strcmp(found->e_path, exp->m_export.e_path)!= 0) { xlog(L_WARNING, "%s and %s have same filehandle for %s, using first", @@ -492,6 +496,7 @@ void nfsd_fh(FILE *f) qword_print(f, found->e_path); qword_eol(f); out: + free(found_path); free(dom); return; } @@ -649,8 +654,7 @@ void nfsd_export(FILE *f) "Cannot export %s, possibly unsupported filesystem" " or fsid= required", path); dump_to_cache(f, dom, path, NULL); - } else - mountlist_add(dom, path); + } } else { dump_to_cache(f, dom, path, NULL); } @@ -729,7 +733,6 @@ int cache_export_ent(char *domain, struct exportent *exp, char *path) "Cannot export %s, possibly unsupported filesystem or" " fsid= required", exp->e_path); } - mountlist_add(domain, exp->e_path); while (err == 0 && (exp->e_flags & NFSEXP_CROSSMOUNT) && path) { /* really an 'if', but we can break out of