Module: wine Branch: master Commit: e783c358b65050d783a53bd605d927658fed71dd URL: https://gitlab.winehq.org/wine/wine/-/commit/e783c358b65050d783a53bd605d9276...
Author: Gabriel Ivăncescu gabrielopcode@gmail.com Date: Tue Aug 23 17:31:21 2022 +0300
mshtml: Handle S_FALSE from IUri methods when checking targetOrigin.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com
---
dlls/mshtml/htmlwindow.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index 7774e0fc92d..b9dcfa6e913 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -3181,24 +3181,32 @@ static HRESULT check_target_origin(HTMLInnerWindow *window, const WCHAR *target_ goto done; }
+ bstr = NULL; hres = IUri_GetSchemeName(uri, &bstr); - if(FAILED(hres)) + if(hres != S_OK) { + SysFreeString(bstr); goto done; + } hres = IUri_GetSchemeName(target, &bstr2); if(SUCCEEDED(hres)) { - hres = !wcsicmp(bstr, bstr2) ? S_OK : S_FALSE; + if(hres == S_OK && wcsicmp(bstr, bstr2)) + hres = S_FALSE; SysFreeString(bstr2); } SysFreeString(bstr); if(hres != S_OK) goto done;
+ bstr = NULL; hres = IUri_GetHost(uri, &bstr); - if(FAILED(hres)) + if(hres != S_OK) { + SysFreeString(bstr); goto done; + } hres = IUri_GetHost(target, &bstr2); if(SUCCEEDED(hres)) { - hres = !wcsicmp(bstr, bstr2) ? S_OK : S_FALSE; + if(hres == S_OK && wcsicmp(bstr, bstr2)) + hres = S_FALSE; SysFreeString(bstr2); } SysFreeString(bstr); @@ -3210,11 +3218,11 @@ static HRESULT check_target_origin(HTMLInnerWindow *window, const WCHAR *target_ goto done;
hres = IUri_GetPort(uri, &port); - if(FAILED(hres)) + if(hres != S_OK) goto done; hres = IUri_GetPort(target, &port2); - if(SUCCEEDED(hres)) - hres = (port == port2) ? S_OK : S_FALSE; + if(hres == S_OK && port != port2) + hres = S_FALSE;
done: IUri_Release(target);