From 59816ac69d9f836438801825fd31b0c9077bc790 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Mon, 17 Jan 2022 17:03:14 +0100 Subject: [PATCH] main: always lookup the parent directory Signed-off-by: Giuseppe Scrivano --- main.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index 120cf1f..bb94a0c 100644 --- a/main.c +++ b/main.c @@ -4465,6 +4465,13 @@ ovl_rename_direct (fuse_req_t req, fuse_ino_t parent, const char *name, struct ovl_node key; bool destnode_is_whiteout = false; + pnode = do_lookup_file (lo, parent, NULL); + if (pnode == NULL || pnode->whiteout) + { + fuse_reply_err (req, ENOENT); + return; + } + node = do_lookup_file (lo, parent, name); if (node == NULL || node->whiteout) { @@ -4487,7 +4494,6 @@ ovl_rename_direct (fuse_req_t req, fuse_ino_t parent, const char *name, return; } } - pnode = node->parent; destpnode = do_lookup_file (lo, newparent, NULL); destnode = NULL; @@ -4527,6 +4533,7 @@ ovl_rename_direct (fuse_req_t req, fuse_ino_t parent, const char *name, { size_t destnode_whiteouts = 0; + errno = EINVAL; if (!destnode->whiteout && destnode->tmp_ino == node->tmp_ino && destnode->tmp_dev == node->tmp_dev) goto error;