From 1992a667c49cdd83ff7d7414a07225fcf34f0ad2 Mon Sep 17 00:00:00 2001 From: Jeff Layton Date: Thu, 27 Sep 2007 06:53:43 -0400 Subject: [PATCH] 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 Acked-by: Steve Dickson Signed-off-by: Neil Brown --- utils/mountd/cache.c | 3 +++ 1 file changed, 3 insertions(+) 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; } -- 2.39.2