Просмотр исходного кода

[FL-2997] Improve file name filtering #2047

Co-authored-by: あく <alleteam@gmail.com>
Georgii Surkov 3 лет назад
Родитель
Сommit
c535ce9b76
1 измененных файлов с 10 добавлено и 15 удалено
  1. 10 15
      lib/toolbox/path.c

+ 10 - 15
lib/toolbox/path.c

@@ -95,22 +95,17 @@ bool path_contains_only_ascii(const char* path) {
         name_pos++;
     }
 
-    while(*name_pos != '\0') {
-        if((*name_pos >= '0') && (*name_pos <= '9')) {
-            name_pos++;
-            continue;
-        } else if((*name_pos >= 'A') && (*name_pos <= 'Z')) {
-            name_pos++;
-            continue;
-        } else if((*name_pos >= 'a') && (*name_pos <= 'z')) {
-            name_pos++;
-            continue;
-        } else if(strchr(" .!#\\$%&'()-@^_`{}~", *name_pos) != NULL) {
-            name_pos++;
-            continue;
-        }
+    for(; *name_pos; ++name_pos) {
+        const char c = *name_pos;
 
-        return false;
+        // Regular ASCII characters from 0x20 to 0x7e
+        const bool is_out_of_range = (c < ' ') || (c > '~');
+        // Cross-platform forbidden character set
+        const bool is_forbidden = strchr("\\<>*|\":?", c);
+
+        if(is_out_of_range || is_forbidden) {
+            return false;
+        }
     }
 
     return true;