1.14.2
This commit is contained in:
parent
b49c7fcde1
commit
6a5dec1647
|
@ -29,6 +29,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
- fixed Chrome stopped printing [#3926](https://github.com/sandboxie-plus/Sandboxie/issues/3926)
|
- fixed Chrome stopped printing [#3926](https://github.com/sandboxie-plus/Sandboxie/issues/3926)
|
||||||
- Sandboxie will add CustomChromiumFlags=--disable-features=PrintCompositorLPAC to chrome based browsers command line
|
- Sandboxie will add CustomChromiumFlags=--disable-features=PrintCompositorLPAC to chrome based browsers command line
|
||||||
- Note: Less Privileged App Container (LPAC) don't work with sandboxie currently
|
- Note: Less Privileged App Container (LPAC) don't work with sandboxie currently
|
||||||
|
- fixed Problem accessing a relative symlink with a target that starts with a dot [#3981](https://github.com/sandboxie-plus/Sandboxie/issues/3981)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3172,44 +3172,48 @@ WCHAR* File_CanonizePath(const wchar_t* absolute_path, ULONG abs_path_len, const
|
||||||
ULONG i, j;
|
ULONG i, j;
|
||||||
|
|
||||||
while(absolute_path[abs_path_len-1] == L'\\')
|
while(absolute_path[abs_path_len-1] == L'\\')
|
||||||
abs_path_len--;
|
abs_path_len--;
|
||||||
|
|
||||||
WCHAR* result = Dll_Alloc((abs_path_len + rel_path_len + 1) * sizeof(wchar_t));
|
WCHAR* result = (WCHAR*)Dll_Alloc((abs_path_len + rel_path_len + 1) * sizeof(wchar_t));
|
||||||
if (!result) return NULL;
|
if (!result) return NULL;
|
||||||
wcsncpy(result, absolute_path, abs_path_len);
|
wcsncpy(result, absolute_path, abs_path_len);
|
||||||
result[abs_path_len] = 0;
|
result[abs_path_len] = 0;
|
||||||
|
|
||||||
for (i = 0; i < rel_path_len; ) {
|
for (i = 0; i < rel_path_len; ) {
|
||||||
|
|
||||||
if (relative_path[i] == L'.' && relative_path[i + 1] == L'.' && (relative_path[i + 2] == L'\\' || relative_path[i + 2] == L'\0')) {
|
if (relative_path[i] == L'.' && relative_path[i + 1] == L'.' && (relative_path[i + 2] == L'\\' || relative_path[i + 2] == L'\0')) {
|
||||||
|
|
||||||
for (j = abs_path_len - 1; j >= 0 && result[j] != L'\\'; --j)
|
for (j = abs_path_len - 1; j >= 0 && result[j] != L'\\'; --j)
|
||||||
result[j] = L'\0';
|
result[j] = L'\0';
|
||||||
if (j >= 0)
|
if (j >= 0)
|
||||||
result[j] = L'\0';
|
result[j] = L'\0';
|
||||||
|
|
||||||
abs_path_len = j;
|
abs_path_len = j;
|
||||||
|
|
||||||
i += 3;
|
i += 3;
|
||||||
|
|
||||||
} else if (relative_path[i] == L'.') {
|
} else if (relative_path[i] == L'.' && (relative_path[i + 1] == L'\\' || relative_path[i + 1] == L'\0')) {
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
for (j = i; j < rel_path_len && relative_path[j] != L'\\' && relative_path[j] != L'\0'; ++j)
|
for (j = i; j < rel_path_len && relative_path[j] != L'\\' && relative_path[j] != L'\0'; ++j)
|
||||||
;
|
;
|
||||||
|
|
||||||
result[abs_path_len] = L'\\';
|
if (abs_path_len > 0 && result[abs_path_len - 1] != L'\\') {
|
||||||
wcsncpy(result + abs_path_len + 1, &relative_path[i], j - i);
|
result[abs_path_len] = L'\\';
|
||||||
result[abs_path_len + j - i + 1] = L'\0';
|
abs_path_len++;
|
||||||
|
}
|
||||||
|
|
||||||
|
wcsncpy(result + abs_path_len, &relative_path[i], j - i);
|
||||||
|
result[abs_path_len + j - i] = L'\0';
|
||||||
|
|
||||||
abs_path_len += j - i + 1;
|
abs_path_len += j - i;
|
||||||
|
|
||||||
i = j + 1;
|
i = j + (relative_path[j] == L'\\' ? 1 : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue