summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorneilbrown <neilbrown>2003-08-11 05:55:49 +0000
committerneilbrown <neilbrown>2003-08-11 05:55:49 +0000
commitfce515b864024bd4d25c55063f0d0835986a01f9 (patch)
tree0c366b45d9eeaa0272627bcefcb267b8f9abde2b
parent9c8dfab04dcf5f5067061703d6cd08ee408eec8f (diff)
downloadnfs-utils-fce515b864024bd4d25c55063f0d0835986a01f9.tar.gz
nfs-utils-fce515b864024bd4d25c55063f0d0835986a01f9.tar.xz
nfs-utils-fce515b864024bd4d25c55063f0d0835986a01f9.zip
close a filehandle before opening.
-rw-r--r--ChangeLog4
-rw-r--r--utils/mountd/cache.c5
2 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 81ccf88..ec81bb5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2003-08-11 NeilBrown <neilb@cse.unsw.edu.au>
+ * utils/mountd/cache.c(cache_get_filehandle): close the filehandle
+ before returning.
+
2003-08-04 NeilBrown <neilb@cse.unsw.edu.au>
* support/include/nfs/export.h, support/nfs/exports.c,
utils/exportfs/exports.c, utils/mountd/mountd.c: change
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index 96492b8..a265ecd 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -376,6 +376,7 @@ cache_get_filehandle(nfs_export *exp, int len, char *p)
FILE *f = fopen("/proc/fs/nfsd/filehandle", "r+");
char buf[200];
char *bp = buf;
+ int failed;
static struct nfs_fh_len fh;
if (!f)
@@ -388,7 +389,9 @@ cache_get_filehandle(nfs_export *exp, int len, char *p)
qword_printint(f, len);
qword_eol(f);
- if (fgets(buf, sizeof(buf), f) == NULL)
+ failed = (fgets(buf, sizeof(buf), f) == NULL);
+ fclose(f);
+ if (failed)
return NULL;
memset(fh.fh_handle, 0, sizeof(fh.fh_handle));
fh.fh_size = qword_get(&bp, fh.fh_handle, NFS3_FHSIZE);