From: Zhiqiang Liu Date: Thu, 5 Nov 2020 10:16:58 +0000 (+0800) Subject: example/cuse_client.c: fix fd leakage problem X-Git-Tag: fuse-3.10.1~5 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=8b4c5d90ee3137472fd63eea1b46cf19da874abd;p=qemu-gpiodev%2Flibfuse.git 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 Signed-off-by: Haotian Li --- 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; }