]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mountd/cache.c
rpc.mountd: fix memory leak and error handling in nfsd_fh
[nfs-utils.git] / utils / mountd / cache.c
index b686318c1017b0dd951bdc95bab27348a6db0071..fedc0bfc62b1b3656359ce81cc240d66f680abd0 100644 (file)
@@ -445,6 +445,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 +494,7 @@ void nfsd_fh(FILE *f)
                qword_print(f, found->e_path);
        qword_eol(f);
  out:
+       free(found_path);
        free(dom);
        return;         
 }
@@ -649,8 +652,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 +731,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