diff options
author | Jeff Sharkey <jsharkey@android.com> | 2010-12-16 20:31:13 -0800 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2010-12-16 20:32:05 -0800 |
commit | 4cb3633ed73429b0e553ce48d94911f61dd6e769 (patch) | |
tree | 6df09931169c4439ac4269f43c501b4fbbbbd338 /WebKit/android/WebCoreSupport/WebRequest.cpp | |
parent | 27f8b0be5e91afbcd668785adb636b43f27cc9f7 (diff) | |
download | external_webkit-4cb3633ed73429b0e553ce48d94911f61dd6e769.zip external_webkit-4cb3633ed73429b0e553ce48d94911f61dd6e769.tar.gz external_webkit-4cb3633ed73429b0e553ce48d94911f61dd6e769.tar.bz2 |
Fix two SIGSEGV bugs in request interception.
When intercepting requests, properly ReleaseStringUTFChars for mimeType
and encoding after bringing over from Java. Also, when finishing an
intercepted request that failed, construct a valid WebResponse.
Change-Id: I2990df2108a8fdf45c103512a8b9a30f4d6992ce
Diffstat (limited to 'WebKit/android/WebCoreSupport/WebRequest.cpp')
-rw-r--r-- | WebKit/android/WebCoreSupport/WebRequest.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/WebKit/android/WebCoreSupport/WebRequest.cpp b/WebKit/android/WebCoreSupport/WebRequest.cpp index cd496df..da84126 100644 --- a/WebKit/android/WebCoreSupport/WebRequest.cpp +++ b/WebKit/android/WebCoreSupport/WebRequest.cpp @@ -120,9 +120,16 @@ void WebRequest::finish(bool success) m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( m_urlLoader.get(), &WebUrlLoaderClient::didFinishLoading)); } else { - OwnPtr<WebResponse> webResponse(new WebResponse(m_request.get())); - m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( - m_urlLoader.get(), &WebUrlLoaderClient::didFail, webResponse.release())); + if (m_interceptResponse == NULL) { + OwnPtr<WebResponse> webResponse(new WebResponse(m_request.get())); + m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( + m_urlLoader.get(), &WebUrlLoaderClient::didFail, webResponse.release())); + } else { + OwnPtr<WebResponse> webResponse(new WebResponse(m_url, m_interceptResponse->mimeType(), 0, + m_interceptResponse->encoding(), m_interceptResponse->status())); + m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( + m_urlLoader.get(), &WebUrlLoaderClient::didFail, webResponse.release())); + } } m_networkBuffer = 0; m_request = 0; |