From: Lennart Poettering Date: Fri, 26 Feb 2021 16:45:01 +0000 (+0100) Subject: fs-util: use ERRNO_IS_NOT_SUPPORTED() at two more places where we can't be sure of... X-Git-Tag: v248-rc3~88 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=62e10065d0676fd771d25812ef27e1de7747d700;p=thirdparty%2Fsystemd.git fs-util: use ERRNO_IS_NOT_SUPPORTED() at two more places where we can't be sure of the backing implementation --- diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c index f46287d2728..3a3daa9a05d 100644 --- a/src/basic/fs-util.c +++ b/src/basic/fs-util.c @@ -100,7 +100,7 @@ int rename_noreplace(int olddirfd, const char *oldpath, int newdirfd, const char /* renameat2() exists since Linux 3.15, btrfs and FAT added support for it later. If it is not implemented, * fall back to a different method. */ - if (!IN_SET(errno, EINVAL, ENOSYS, ENOTTY)) + if (!ERRNO_IS_NOT_SUPPORTED(errno) && errno != EINVAL) return -errno; /* Let's try to use linkat()+unlinkat() as fallback. This doesn't work on directories and on some file systems @@ -117,7 +117,7 @@ int rename_noreplace(int olddirfd, const char *oldpath, int newdirfd, const char return 0; } - if (!IN_SET(errno, EINVAL, ENOSYS, ENOTTY, EPERM)) /* FAT returns EPERM on link()… */ + if (!ERRNO_IS_NOT_SUPPORTED(errno) && !IN_SET(errno, EINVAL, EPERM)) /* FAT returns EPERM on link()… */ return -errno; /* OK, neither RENAME_NOREPLACE nor linkat()+unlinkat() worked. Let's then fall back to the racy TOCTOU