]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
hurd: Fix renameat2 error
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 1 Dec 2019 16:46:38 +0000 (16:46 +0000)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 1 Dec 2019 16:46:59 +0000 (16:46 +0000)
renameat2 has to exclude RENAME_EXCHANGE | RENAME_NOREPLACE with EINVAL,
as tested by stdio-common/tst-renameat2.

sysdeps/mach/hurd/renameat2.c

index 7892e9ca9e0a3b523dca14208a01efc5766a222c..9e8f39d54071280bc413dc50b8e0b0cd9d9195ee 100644 (file)
@@ -30,6 +30,8 @@ __renameat2 (int oldfd, const char *old, int newfd, const char *new,
   const char *oldname, *newname;
   int excl = 0;
 
+  if ((flags & (RENAME_EXCHANGE | RENAME_NOREPLACE)) == (RENAME_EXCHANGE | RENAME_NOREPLACE))
+    return __hurd_fail (EINVAL);
   if (flags & (RENAME_EXCHANGE | RENAME_WHITEOUT))
     return __hurd_fail (ENOSYS);
   if (flags & RENAME_NOREPLACE)