validate_filename was called before skip_root in is_valid_instpath and so no root directory was ever valid, even with AllowRootDirInstall

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4293 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2005-10-04 11:18:43 +00:00
parent 21457af9ac
commit e0e4e54cea

View file

@ -285,13 +285,19 @@ int NSISCALL is_valid_instpath(char *s)
mystrcpy(tmp, s);
validate_filename(tmp);
root = skip_root(tmp);
if (!root)
return 0;
// must be called after skip_root or AllowRootDirInstall won't work.
// validate_filename removes trailing blackslashes and so converts
// "C:\" to "C:" which is not a valid directory. skip_root returns
// NULL for "C:" so the above test returns 0.
// validate_filename is called so directories such as "C:\ " will
// not pass as a valid non-root directory.
validate_filename(root);
if ((g_flags & CH_FLAGS_NO_ROOT_DIR) && (!*root || *root == '\\'))
return 0;
@ -684,7 +690,10 @@ void NSISCALL validate_filename(char *in) {
char *nono = "*?|<>/\":";
char *out;
char *out_save;
while (*in == ' ') in = CharNext(in);
// ignoring spaces is wrong, " C:\blah" is invalid
//while (*in == ' ') in = CharNext(in);
if (in[0] == '\\' && in[1] == '\\' && in[2] == '?' && in[3] == '\\')
{
// at least four bytes