From 16daf6700a30401699005b6f798c73689b6223d9 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 15 May 2018 15:45:31 +0200 Subject: [PATCH] [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 4238557bbe6..4dfd7d40b64 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; } -- 2.17.1