[PATCH v2] msxml3: all string passed to IXMLDOMDocument_load() need to be URL-unescaped
Nikolay Sivov
nsivov at codeweavers.com
Sun Dec 8 07:56:12 CST 2019
This again is too complicated and unescapes every url, which is
unnecessary. Does attached patch work for you?
-------------- next part --------------
From 7fac512c579e9f671b279d8301d8c40b3b5afcf8 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Sun, 8 Dec 2019 16:53:08 +0300
Subject: [PATCH] msxml3: Handle escaped document file paths.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/msxml3/bsc.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/msxml3/bsc.c b/dlls/msxml3/bsc.c
index df4cf37346..0b9e679bda 100644
--- a/dlls/msxml3/bsc.c
+++ b/dlls/msxml3/bsc.c
@@ -253,15 +253,19 @@ HRESULT create_uri(const WCHAR *url, IUri **uri)
WCHAR fullpath[MAX_PATH];
DWORD needed = ARRAY_SIZE(fileUrl);
- if (!PathSearchAndQualifyW(url, fullpath, ARRAY_SIZE(fullpath)))
+ lstrcpynW(fileUrl, url, ARRAY_SIZE(fileUrl));
+ UrlUnescapeW(fileUrl, NULL, NULL, URL_UNESCAPE_INPLACE);
+
+ if (!PathSearchAndQualifyW(fileUrl, fullpath, ARRAY_SIZE(fullpath)))
{
WARN("can't find path\n");
return E_FAIL;
}
- if (FAILED(UrlCreateFromPathW(fullpath, fileUrl, &needed, 0)))
+ if (FAILED(UrlApplySchemeW(fullpath, fileUrl, &needed, URL_APPLY_GUESSSCHEME | URL_APPLY_GUESSFILE |
+ URL_APPLY_DEFAULT)))
{
- ERR("can't create url from path\n");
+ ERR("Failed to apply url scheme.\n");
return E_FAIL;
}
url = fileUrl;
--
2.24.0
More information about the wine-devel
mailing list