[USETUP] Improve the install path checks
authorEric Kohl <eric.kohl@reactos.org>
Tue, 15 May 2018 13:45:31 +0000 (15:45 +0200)
committerEric Kohl <eric.kohl@reactos.org>
Tue, 15 May 2018 13:45:31 +0000 (15:45 +0200)
- Path must not contain whitespace characters.
- Path must be at least 2 characters long.
- Path must start with a backslash.
- Path must not end with a backslash.
- Path components must not end with a dot.

CORE-9529

base/setup/usetup/filesup.c

index 4238557..4dfd7d4 100644 (file)
@@ -140,13 +140,38 @@ IsValidPath(
 
     // TODO: Add check for 8.3 too.
 
-    /* Check for whitespaces */
+    /* Path must be at least 2 characters long */
+    if (Length < 2)
+        return FALSE;
+
+    /* Path must start with a backslash */
+    if (InstallDir[0] != L'\\')
+        return FALSE;
+
+    /* Path must not end with a backslash */
+    if (InstallDir[Length - 1] == L'\\')
+        return FALSE;
+
+    /* Path must not contain whitespace characters */
     for (i = 0; i < Length; i++)
     {
         if (isspace(InstallDir[i]))
             return FALSE;
     }
 
+    /* Path component must not end with a dot */
+    for (i = 0; i < Length; i++)
+    {
+        if (InstallDir[i] == L'\\' && i > 0)
+        {
+            if (InstallDir[i - 1] == L'.')
+                return FALSE;
+        }
+    }
+
+    if (InstallDir[Length - 1] == L'.')
+        return FALSE;
+
     return TRUE;
 }