diff options
author | Zhiqiang Liu <liuzhiqiang26@huawei.com> | 2020-11-05 18:16:58 +0800 |
---|---|---|
committer | Nikolaus Rath <Nikolaus@rath.org> | 2020-11-06 19:26:03 +0000 |
commit | 8b4c5d90ee3137472fd63eea1b46cf19da874abd (patch) | |
tree | 9d7014f6d14b3d63f147ad7a0ef2c680221a2381 | |
parent | 2a87b64af7cdff331f62cff37d3b8528299d1708 (diff) | |
download | libfuse-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>
-rw-r--r-- | example/cuse_client.c | 14 |
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; } |