msxml3: Embed user/password in uri used to create a moniker.
This commit is contained in:
parent
d8a86da66e
commit
448e939ebe
@ -619,8 +619,27 @@ static HRESULT WINAPI Authenticate_Authenticate(IAuthenticate *iface,
|
|||||||
HWND *hwnd, LPWSTR *username, LPWSTR *password)
|
HWND *hwnd, LPWSTR *username, LPWSTR *password)
|
||||||
{
|
{
|
||||||
BindStatusCallback *This = impl_from_IAuthenticate(iface);
|
BindStatusCallback *This = impl_from_IAuthenticate(iface);
|
||||||
FIXME("(%p)->(%p %p %p)\n", This, hwnd, username, password);
|
httprequest *request = This->request;
|
||||||
return E_NOTIMPL;
|
|
||||||
|
TRACE("(%p)->(%p %p %p)\n", This, hwnd, username, password);
|
||||||
|
|
||||||
|
if (request->user && *request->user)
|
||||||
|
{
|
||||||
|
if (hwnd) *hwnd = NULL;
|
||||||
|
*username = CoTaskMemAlloc(SysStringByteLen(request->user)+sizeof(WCHAR));
|
||||||
|
*password = CoTaskMemAlloc(SysStringByteLen(request->password)+sizeof(WCHAR));
|
||||||
|
if (!*username || !*password)
|
||||||
|
{
|
||||||
|
CoTaskMemFree(*username);
|
||||||
|
CoTaskMemFree(*password);
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(*username, request->user, SysStringByteLen(request->user)+sizeof(WCHAR));
|
||||||
|
memcpy(*password, request->password, SysStringByteLen(request->password)+sizeof(WCHAR));
|
||||||
|
}
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const IAuthenticateVtbl AuthenticateVtbl = {
|
static const IAuthenticateVtbl AuthenticateVtbl = {
|
||||||
@ -882,12 +901,6 @@ static HRESULT httprequest_open(httprequest *This, BSTR method, BSTR url,
|
|||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
This->uri = uri;
|
|
||||||
|
|
||||||
VariantInit(&is_async);
|
|
||||||
hr = VariantChangeType(&is_async, &async, 0, VT_BOOL);
|
|
||||||
This->async = hr == S_OK && V_BOOL(&is_async);
|
|
||||||
|
|
||||||
VariantInit(&str);
|
VariantInit(&str);
|
||||||
hr = VariantChangeType(&str, &user, 0, VT_BSTR);
|
hr = VariantChangeType(&str, &user, 0, VT_BSTR);
|
||||||
if (hr == S_OK)
|
if (hr == S_OK)
|
||||||
@ -898,6 +911,38 @@ static HRESULT httprequest_open(httprequest *This, BSTR method, BSTR url,
|
|||||||
if (hr == S_OK)
|
if (hr == S_OK)
|
||||||
This->password = V_BSTR(&str);
|
This->password = V_BSTR(&str);
|
||||||
|
|
||||||
|
/* add authentication info */
|
||||||
|
if (This->user && *This->user)
|
||||||
|
{
|
||||||
|
IUriBuilder *builder;
|
||||||
|
|
||||||
|
hr = CreateIUriBuilder(uri, 0, 0, &builder);
|
||||||
|
if (hr == S_OK)
|
||||||
|
{
|
||||||
|
IUri *full_uri;
|
||||||
|
|
||||||
|
IUriBuilder_SetUserName(builder, This->user);
|
||||||
|
IUriBuilder_SetPassword(builder, This->password);
|
||||||
|
hr = IUriBuilder_CreateUri(builder, -1, 0, 0, &full_uri);
|
||||||
|
if (hr == S_OK)
|
||||||
|
{
|
||||||
|
IUri_Release(uri);
|
||||||
|
uri = full_uri;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
WARN("failed to create modified uri, 0x%08x\n", hr);
|
||||||
|
IUriBuilder_Release(builder);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
WARN("IUriBuilder creation failed, 0x%08x\n", hr);
|
||||||
|
}
|
||||||
|
|
||||||
|
This->uri = uri;
|
||||||
|
|
||||||
|
VariantInit(&is_async);
|
||||||
|
hr = VariantChangeType(&is_async, &async, 0, VT_BOOL);
|
||||||
|
This->async = hr == S_OK && V_BOOL(&is_async);
|
||||||
|
|
||||||
httprequest_setreadystate(This, READYSTATE_LOADING);
|
httprequest_setreadystate(This, READYSTATE_LOADING);
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user