From d4188a4f591971fe8e15b700c82933d97a5800d5 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Fri, 16 Apr 2021 20:36:18 +0200 Subject: [PATCH] main, rename: fix leak on error fix a fd leak on the error exit path. Closes: https://github.com/containers/fuse-overlayfs/issues/289 Signed-off-by: Giuseppe Scrivano --- main.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/main.c b/main.c index 4be2c9e..a4092ca 100644 --- a/main.c +++ b/main.c @@ -4404,8 +4404,8 @@ ovl_rename_direct (fuse_req_t req, fuse_ino_t parent, const char *name, struct ovl_data *lo = ovl_data (req); int ret; int saved_errno; - int srcfd = -1; - int destfd = -1; + cleanup_close int srcfd = -1; + cleanup_close int destfd = -1; struct ovl_node key; bool destnode_is_whiteout = false; @@ -4590,20 +4590,12 @@ ovl_rename_direct (fuse_req_t req, fuse_ino_t parent, const char *name, node->loaded = 0; ret = 0; - goto cleanup; + fuse_reply_err (req, 0); + return; error: ret = -1; - - cleanup: - saved_errno = errno; - if (srcfd >= 0) - close (srcfd); - if (destfd >= 0) - close (destfd); - errno = saved_errno; - - fuse_reply_err (req, ret == 0 ? 0 : errno); + fuse_reply_err (req, errno); } static void