WebKit Bugzilla
Attachment 343896 Details for
Bug 187167
: [WinCairo] WebKit MiniBrowser crashes when attempting to navigate to certain URLs
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
187167.diff (text/plain), 3.13 KB, created by
Christopher Reid
on 2018-06-29 01:32:42 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Christopher Reid
Created:
2018-06-29 01:32:42 PDT
Size:
3.13 KB
patch
obsolete
>diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index af3378cfbc4..ae858fec86e 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,15 @@ >+2018-06-28 Christopher Reid <chris.reid@sony.com> >+ >+ [WinCairo] WebKit MiniBrowser crashes when attempting to navigate to certain URLs >+ https://bugs.webkit.org/show_bug.cgi?id=187167 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ A null byte was written past the end of the buffer causing the crash. >+ Some of the heap allocated buffers were also not getting deleted. >+ >+ * MiniBrowser/win/WebKitBrowserWindow.cpp: >+ > 2018-06-27 Adam Barth <abarth@webkit.org> > > Add Fuchsia support to build-jsc >diff --git a/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp b/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp >index a6dd082b4b4..7f557cbcccc 100644 >--- a/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp >+++ b/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp >@@ -27,20 +27,16 @@ > > #include "MiniBrowserLibResource.h" > #include <WebKit/WKInspector.h> >+#include <vector> > > std::wstring > createString(WKStringRef wkString) > { >- size_t maxSize = WKStringGetMaximumUTF8CStringSize(wkString); >- char* utf8Buffer = new char[maxSize]; >- size_t utf8Length = WKStringGetUTF8CString(wkString, utf8Buffer, maxSize); >+ size_t maxSize = WKStringGetLength(wkString); > >- int wcharLength = MultiByteToWideChar(CP_UTF8, 0, utf8Buffer, utf8Length, 0, 0); >- wchar_t* wcharBuffer = new wchar_t[wcharLength + 1]; >- MultiByteToWideChar(CP_UTF8, 0, utf8Buffer, utf8Length, wcharBuffer, wcharLength); >- wcharBuffer[wcharLength] = L'\0'; >- std::wstring dest(wcharBuffer); >- return dest; >+ std::vector<WKChar> wkCharBuffer(maxSize); >+ size_t actualLength = WKStringGetCharacters(wkString, wkCharBuffer.data(), maxSize); >+ return std::wstring(wkCharBuffer.data(), actualLength); > } > > std::wstring createString(WKURLRef wkURL) >@@ -49,30 +45,28 @@ std::wstring createString(WKURLRef wkURL) > return createString(url.get()); > } > >-std::string toUtf8(const wchar_t* src, size_t srcLength) >+std::vector<char> toUtf8(const wchar_t* src, size_t srcLength) > { > int utf8Length = WideCharToMultiByte(CP_UTF8, 0, src, srcLength, 0, 0, nullptr, nullptr); >- char* utf8Buffer = new char[utf8Length]; >+ std::vector<char> utf8Buffer(utf8Length + 1); > WideCharToMultiByte(CP_UTF8, 0, src, srcLength, >- utf8Buffer, utf8Length, nullptr, nullptr); >+ utf8Buffer.data(), utf8Length, nullptr, nullptr); > utf8Buffer[utf8Length] = '\0'; >- std::string dest(utf8Buffer); >- delete[] utf8Buffer; >- return dest; >+ return utf8Buffer; > } > > WKRetainPtr<WKStringRef> > createWKString(_bstr_t str) > { > auto utf8 = toUtf8(str, str.length()); >- return adoptWK(WKStringCreateWithUTF8CString(utf8.c_str())); >+ return adoptWK(WKStringCreateWithUTF8CString(utf8.data())); > } > > WKRetainPtr<WKURLRef> > createWKURL(_bstr_t str) > { > auto utf8 = toUtf8(str, str.length()); >- return adoptWK(WKURLCreateWithUTF8CString(utf8.c_str())); >+ return adoptWK(WKURLCreateWithUTF8CString(utf8.data())); > } > > Ref<BrowserWindow> WebKitBrowserWindow::create(HWND mainWnd, HWND urlBarWnd, bool, bool)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 187167
:
343887
|
343896
|
344449
|
344455