https://git.reactos.org/?p=reactos.git;a=commitdiff;h=16daf6700a30401699005…
commit 16daf6700a30401699005b6f798c73689b6223d9
Author: Eric Kohl <eric.kohl(a)reactos.org>
AuthorDate: Tue May 15 15:45:31 2018 +0200
Commit: Eric Kohl <eric.kohl(a)reactos.org>
CommitDate: Tue May 15 15:45:31 2018 +0200
[USETUP] Improve the install path checks
- 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 | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/base/setup/usetup/filesup.c b/base/setup/usetup/filesup.c
index 4238557bbe..4dfd7d40b6 100644
--- a/base/setup/usetup/filesup.c
+++ b/base/setup/usetup/filesup.c
@@ -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;
}