]> sourceware.org Git - newlib-cygwin.git/commitdiff
Cygwin: unlink: filter out virtual files and devices early on
authorCorinna Vinschen <corinna@vinschen.de>
Tue, 22 Feb 2022 12:32:29 +0000 (13:32 +0100)
committerCorinna Vinschen <corinna@vinschen.de>
Tue, 22 Feb 2022 12:33:06 +0000 (13:33 +0100)
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
winsup/cygwin/devices.h
winsup/cygwin/syscalls.cc

index fbbde6ab9c6b07eebea540ea1b5187b8de315275..8f718dd17a3816dba60575cb49ff730540ee71ec 100644 (file)
@@ -433,6 +433,7 @@ extern const _device dev_fs_storage;
 #define iscygdrive_dev(devn) (devn == FH_CYGDRIVE)
 
 #define isdev_dev(devn) (devn == FH_DEV)
+#define isdevfd_dev(devn) (devn == FH_DEV_FD)
 
 #define isprocsys_dev(devn) (devn == FH_PROCSYS)
 
index 661c143479e400ee6a878516c36f9413f5c87914..24ec01da8eed69b60089d0c657a21495c9e7301c 100644 (file)
@@ -1123,7 +1123,11 @@ unlink (const char *ourname)
       set_errno (EROFS);
       goto done;
     }
-
+  if (isdevfd_dev (devn) || (win32_name.isdevice () && !win32_name.issocket ()))
+    {
+      set_errno (EPERM);
+      goto done;
+    }
   if (!win32_name.exists ())
     {
       debug_printf ("unlinking a nonexistent file");
This page took 0.038265 seconds and 5 git commands to generate.