aboutsummaryrefslogtreecommitdiffstats
path: root/example
diff options
context:
space:
mode:
authorZhiqiang Liu <liuzhiqiang26@huawei.com>2020-11-05 18:16:58 +0800
committerNikolaus Rath <Nikolaus@rath.org>2020-11-06 19:26:03 +0000
commit8b4c5d90ee3137472fd63eea1b46cf19da874abd (patch)
tree9d7014f6d14b3d63f147ad7a0ef2c680221a2381 /example
parent2a87b64af7cdff331f62cff37d3b8528299d1708 (diff)
downloadlibfuse-8b4c5d90ee3137472fd63eea1b46cf19da874abd.tar.gz
example/cuse_client.c: fix fd leakage problem
In cuse_client.c, fd should be closed before return. Otherwise, it will cause fd leakage problem. Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com> Signed-off-by: Haotian Li <lihaotian9@huawei.com>
Diffstat (limited to 'example')
-rw-r--r--example/cuse_client.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/example/cuse_client.c b/example/cuse_client.c
index fe928d6..465302c 100644
--- a/example/cuse_client.c
+++ b/example/cuse_client.c
@@ -121,16 +121,17 @@ int main(int argc, char **argv)
if (!argc) {
if (ioctl(fd, FIOC_GET_SIZE, &size)) {
perror("ioctl");
- return 1;
+ goto error;
}
printf("%zu\n", size);
} else {
size = param[0];
if (ioctl(fd, FIOC_SET_SIZE, &size)) {
perror("ioctl");
- return 1;
+ goto error;
}
}
+ close(fd);
return 0;
case 'r':
@@ -138,13 +139,18 @@ int main(int argc, char **argv)
rc = do_rw(fd, cmd == 'r', param[0], param[1],
&prev_size, &new_size);
if (rc < 0)
- return 1;
+ goto error;
fprintf(stderr, "transferred %d bytes (%zu -> %zu)\n",
rc, prev_size, new_size);
+ close(fd);
return 0;
}
- usage:
+usage:
fprintf(stderr, "%s", usage);
return 1;
+
+error:
+ close(fd);
+ return 1;
}