summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2017-11-13 15:58:59 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2017-11-13 14:51:07 +0100
commit4b334e45d570b79708ef34afba2eab78a410dab5 (patch)
treeb74577c07e94ef86e31d0863ccacba5af8fb6adb
parent610d909dac1c68286dc12ed5dc1206affefe6774 (diff)
IsValidFilePath: fix correction of double path delimiters
Wuthout this fix, it had always tried to replace in original path, thus second occurence of double path delimiter, like in C:\dir1\\dir2\dir3\\file would result in invalid path reported. Change-Id: I63ce97b620229601e18f10016a759275aceeec4d Reviewed-on: https://gerrit.libreoffice.org/44675 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Jenkins <ci@libreoffice.org>
-rw-r--r--sal/osl/w32/file_url.cxx4
1 files changed, 3 insertions, 1 deletions
diff --git a/sal/osl/w32/file_url.cxx b/sal/osl/w32/file_url.cxx
index 568abf19fd7c..d25fd9b56d71 100644
--- a/sal/osl/w32/file_url.cxx
+++ b/sal/osl/w32/file_url.cxx
@@ -270,13 +270,15 @@ DWORD IsValidFilePath(rtl_uString *path, DWORD dwFlags, rtl_uString **corrected)
}
/* Now validate each component of the path */
+ rtl_uString * lastCorrected = path;
while ( bValid && lpComponent )
{
// Correct path by merging consecutive slashes:
if (*lpComponent == '\\' && corrected != nullptr) {
sal_Int32 i = lpComponent - lpszPath;
- rtl_uString_newReplaceStrAt(corrected, path, i, 1, nullptr);
+ rtl_uString_newReplaceStrAt(corrected, lastCorrected, i, 1, nullptr);
//TODO: handle out-of-memory
+ lastCorrected = *corrected;
lpszPath = (*corrected)->buffer;
lpComponent = lpszPath + i;
}