Bläddra i källkod

Remove call to Path.GetInvalidFileNameChars

Superseded by a static char list to avoid platform-dependent issues
Ronan Charles-Lorel 1 år sedan
förälder
incheckning
46763b7661
1 ändrade filer med 8 tillägg och 3 borttagningar
  1. 8 3
      Emby.Server.Implementations/IO/ManagedFileSystem.cs

+ 8 - 3
Emby.Server.Implementations/IO/ManagedFileSystem.cs

@@ -275,9 +275,14 @@ namespace Emby.Server.Implementations.IO
         /// <exception cref="ArgumentNullException">The filename is null.</exception>
         public string GetValidFilename(string filename)
         {
-            // necessary because (as per the doc) GetInvalidFileNameChars is not exhaustive and may not return all invalid chars, which creates issues
-            char[] genericInvalidChars = { ':' };
-            var invalid = Path.GetInvalidFileNameChars().Concat(genericInvalidChars).ToArray();
+            // using a character list instead of GetInvalidFileNameChars, as it is not exhaustive and may not return all invalid chars
+            char[] invalid = {
+                '\"', '<', '>', '|', '\0',
+                (char)1, (char)2, (char)3, (char)4, (char)5, (char)6, (char)7, (char)8, (char)9, (char)10,
+                (char)11, (char)12, (char)13, (char)14, (char)15, (char)16, (char)17, (char)18, (char)19, (char)20,
+                (char)21, (char)22, (char)23, (char)24, (char)25, (char)26, (char)27, (char)28, (char)29, (char)30,
+                (char)31, ':', '*', '?', '\\', '/'
+            };
             var first = filename.IndexOfAny(invalid);
             if (first == -1)
             {