Michael Stefaniuc : inetcomm: Zero terminate the mhtml WCHAR strings.
Alexandre Julliard
julliard at winehq.org
Fri Oct 23 14:27:18 CDT 2020
Module: wine
Branch: master
Commit: 87fc5320d68ec4f1624388435ac5db76010932c5
URL: https://source.winehq.org/git/wine.git/?a=commit;h=87fc5320d68ec4f1624388435ac5db76010932c5
Author: Michael Stefaniuc <mstefani at winehq.org>
Date: Fri Oct 23 11:20:00 2020 +0200
inetcomm: Zero terminate the mhtml WCHAR strings.
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/inetcomm/mimeole.c | 8 +++-----
dlls/inetcomm/protocol.c | 27 +++++++++++++--------------
2 files changed, 16 insertions(+), 19 deletions(-)
diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c
index eda9a911bbf..74c5c670d15 100644
--- a/dlls/inetcomm/mimeole.c
+++ b/dlls/inetcomm/mimeole.c
@@ -3697,8 +3697,6 @@ HRESULT WINAPI MimeOleObjectFromMoniker(BINDF bindf, IMoniker *moniker, IBindCtx
size_t len;
HRESULT hres;
- static const WCHAR mhtml_prefixW[] = {'m','h','t','m','l',':'};
-
WARN("(0x%08x, %p, %p, %s, %p, %p) semi-stub\n", bindf, moniker, binding, debugstr_guid(riid), out, moniker_new);
if(!IsEqualGUID(&IID_IUnknown, riid)) {
@@ -3713,12 +3711,12 @@ HRESULT WINAPI MimeOleObjectFromMoniker(BINDF bindf, IMoniker *moniker, IBindCtx
TRACE("display name %s\n", debugstr_w(display_name));
len = lstrlenW(display_name);
- mhtml_url = heap_alloc((len+1)*sizeof(WCHAR) + sizeof(mhtml_prefixW));
+ mhtml_url = heap_alloc(len*sizeof(WCHAR) + sizeof(L"mhtml:"));
if(!mhtml_url)
return E_OUTOFMEMORY;
- memcpy(mhtml_url, mhtml_prefixW, sizeof(mhtml_prefixW));
- lstrcpyW(mhtml_url + ARRAY_SIZE(mhtml_prefixW), display_name);
+ lstrcpyW(mhtml_url, L"mhtml:");
+ lstrcatW(mhtml_url, display_name);
HeapFree(GetProcessHeap(), 0, display_name);
hres = CreateURLMoniker(NULL, mhtml_url, moniker_new);
diff --git a/dlls/inetcomm/protocol.c b/dlls/inetcomm/protocol.c
index e50e5a625c3..e272689a9ac 100644
--- a/dlls/inetcomm/protocol.c
+++ b/dlls/inetcomm/protocol.c
@@ -59,8 +59,8 @@ typedef struct {
WCHAR url[1];
} MimeHtmlBinding;
-static const WCHAR mhtml_prefixW[] = {'m','h','t','m','l',':'};
-static const WCHAR mhtml_separatorW[] = {'!','x','-','u','s','c',':'};
+static const WCHAR mhtml_prefixW[] = L"mhtml:";
+static const WCHAR mhtml_separatorW[] = L"!x-usc:";
static inline LPWSTR heap_strdupW(LPCWSTR str)
{
@@ -82,16 +82,16 @@ static HRESULT parse_mhtml_url(const WCHAR *url, mhtml_url_t *r)
{
const WCHAR *p;
- if(wcsnicmp(url, mhtml_prefixW, ARRAY_SIZE(mhtml_prefixW)))
+ if(wcsnicmp(url, mhtml_prefixW, lstrlenW(mhtml_prefixW)))
return E_FAIL;
- r->mhtml = url + ARRAY_SIZE(mhtml_prefixW);
+ r->mhtml = url + lstrlenW(mhtml_prefixW);
p = wcschr(r->mhtml, '!');
if(p) {
r->mhtml_len = p - r->mhtml;
/* FIXME: We handle '!' and '!x-usc:' in URLs as the same thing. Those should not be the same. */
- if(!wcsncmp(p, mhtml_separatorW, ARRAY_SIZE(mhtml_separatorW)))
- p += ARRAY_SIZE(mhtml_separatorW);
+ if(!wcsncmp(p, mhtml_separatorW, lstrlenW(mhtml_separatorW)))
+ p += lstrlenW(mhtml_separatorW);
else
p++;
}else {
@@ -656,7 +656,7 @@ static HRESULT WINAPI MimeHtmlProtocolInfo_CombineUrl(IInternetProtocolInfo *ifa
DWORD cchResult, DWORD* pcchResult, DWORD dwReserved)
{
MimeHtmlProtocol *This = impl_from_IInternetProtocolInfo(iface);
- size_t len = ARRAY_SIZE(mhtml_prefixW);
+ size_t len = lstrlenW(mhtml_prefixW);
mhtml_url_t url;
WCHAR *p;
HRESULT hres;
@@ -669,27 +669,26 @@ static HRESULT WINAPI MimeHtmlProtocolInfo_CombineUrl(IInternetProtocolInfo *ifa
if(FAILED(hres))
return hres;
- if(!wcsnicmp(pwzRelativeUrl, mhtml_prefixW, ARRAY_SIZE(mhtml_prefixW))) {
+ if(!wcsnicmp(pwzRelativeUrl, mhtml_prefixW, len)) {
FIXME("Relative URL is mhtml protocol\n");
return INET_E_USE_DEFAULT_PROTOCOLHANDLER;
}
len += url.mhtml_len;
if(*pwzRelativeUrl)
- len += lstrlenW(pwzRelativeUrl) + ARRAY_SIZE(mhtml_separatorW);
+ len += lstrlenW(pwzRelativeUrl) + lstrlenW(mhtml_separatorW);
if(len >= cchResult) {
*pcchResult = 0;
return E_FAIL;
}
- memcpy(pwzResult, mhtml_prefixW, sizeof(mhtml_prefixW));
- p = pwzResult + ARRAY_SIZE(mhtml_prefixW);
+ lstrcpyW(pwzResult, mhtml_prefixW);
+ p = pwzResult + lstrlenW(mhtml_prefixW);
memcpy(p, url.mhtml, url.mhtml_len*sizeof(WCHAR));
p += url.mhtml_len;
if(*pwzRelativeUrl) {
- memcpy(p, mhtml_separatorW, sizeof(mhtml_separatorW));
- p += ARRAY_SIZE(mhtml_separatorW);
- lstrcpyW(p, pwzRelativeUrl);
+ lstrcpyW(p, mhtml_separatorW);
+ lstrcatW(p, pwzRelativeUrl);
}else {
*p = 0;
}
More information about the wine-cvs
mailing list