From 77c3e07f938a1600d9b416c44b50066f28117643 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Sat, 13 Jul 2024 18:54:36 +0200 Subject: [PATCH] basic/mkdir: merge two if blocks, return more accurate errno --- src/basic/mkdir.c | 8 +++----- src/test/test-mkdir.c | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c index f87de0a2bf5..3e1545a58bb 100644 --- a/src/basic/mkdir.c +++ b/src/basic/mkdir.c @@ -151,15 +151,13 @@ int mkdir_parents_internal(const char *prefix, const char *path, mode_t mode, ui if (prefix) { p = path_startswith_full(path, prefix, /* accept_dot_dot= */ false); if (!p) - return -ENOTDIR; - } else - p = path; + return -EINVAL; - if (prefix) { fd = open(prefix, O_PATH|O_DIRECTORY|O_CLOEXEC); if (fd < 0) return -errno; - } + } else + p = path; return mkdirat_parents_internal(fd, p, mode, uid, gid, flags, _mkdirat); } diff --git a/src/test/test-mkdir.c b/src/test/test-mkdir.c index ef00729c08b..b2cc910dd13 100644 --- a/src/test/test-mkdir.c +++ b/src/test/test-mkdir.c @@ -75,7 +75,7 @@ TEST(mkdir_p_safe) { assert_se(is_dir(q, false) > 0); assert_se(is_dir(q, true) > 0); - assert_se(mkdir_p_safe(tmp, "/tmp/test-mkdir-outside", 0755, UID_INVALID, GID_INVALID, 0) == -ENOTDIR); + ASSERT_ERROR(mkdir_p_safe(tmp, "/tmp/test-mkdir-outside", 0755, UID_INVALID, GID_INVALID, 0), EINVAL); p = mfree(p); assert_se(p = path_join(tmp, "zero-mode/should-fail-to-create-child")); -- 2.47.3