https://git.reactos.org/?p=reactos.git;a=commitdiff;h=16daf6700a30401699005b...
commit 16daf6700a30401699005b6f798c73689b6223d9 Author: Eric Kohl eric.kohl@reactos.org AuthorDate: Tue May 15 15:45:31 2018 +0200 Commit: Eric Kohl eric.kohl@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; }