summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2007-09-27 06:53:43 -0400
committerNeil Brown <neilb@suse.de>2007-09-28 11:39:56 +1000
commit1992a667c49cdd83ff7d7414a07225fcf34f0ad2 (patch)
tree9ebb29f19ac00b1cd48483df545c0e8dce8d793c
parent97fed3061fd5c742ebd1f685e3e6dcb62e835b74 (diff)
downloadnfs-utils-1992a667c49cdd83ff7d7414a07225fcf34f0ad2.tar.gz
nfs-utils-1992a667c49cdd83ff7d7414a07225fcf34f0ad2.tar.xz
nfs-utils-1992a667c49cdd83ff7d7414a07225fcf34f0ad2.zip
rpc.mountd: fix memory leak and error handling in nfsd_fh
nfsd_fh() uses strdup for creating found_path and doesn't check the return value. It also doesn't free this memory when the function returns. Check the return value of strdup and return immediately if it's NULL. Also, free found_path on exit. Signed-off-by: Jeff Layton <jlayton@redhat.com> Acked-by: Steve Dickson <steved@redhat.com> Signed-off-by: Neil Brown <neilb@suse.de>
-rw-r--r--utils/mountd/cache.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index 15100d4..fedc0bf 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -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;
}