summaryrefslogtreecommitdiffstats
path: root/content/renderer
diff options
context:
space:
mode:
authorcreis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-04 22:55:40 +0000
committercreis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-04 22:55:40 +0000
commitffc906fceebee86a962e45ab039b254a8ad11046 (patch)
tree2f9d1705e67687e8fb460b3dce1b011597f90f95 /content/renderer
parentff300b44a319f603ac4c4af6abc1f07897e96816 (diff)
downloadchromium_src-ffc906fceebee86a962e45ab039b254a8ad11046.zip
chromium_src-ffc906fceebee86a962e45ab039b254a8ad11046.tar.gz
chromium_src-ffc906fceebee86a962e45ab039b254a8ad11046.tar.bz2
Add a second line of defense for receiving a bad message in the renderer.
BUG=88949 TEST=none Review URL: http://codereview.chromium.org/8142009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104010 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer')
-rw-r--r--content/renderer/render_view.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/content/renderer/render_view.cc b/content/renderer/render_view.cc
index 5248e3e..708b874d 100644
--- a/content/renderer/render_view.cc
+++ b/content/renderer/render_view.cc
@@ -588,7 +588,8 @@ bool RenderView::OnMessageReceived(const IPC::Message& message) {
return true;
bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(RenderView, message)
+ bool msg_is_ok = true;
+ IPC_BEGIN_MESSAGE_MAP_EX(RenderView, message, msg_is_ok)
IPC_MESSAGE_HANDLER(ViewMsg_Navigate, OnNavigate)
IPC_MESSAGE_HANDLER(ViewMsg_Stop, OnStop)
IPC_MESSAGE_HANDLER(ViewMsg_ReloadFrame, OnReloadFrame)
@@ -695,6 +696,13 @@ bool RenderView::OnMessageReceived(const IPC::Message& message) {
// Have the super handle all other messages.
IPC_MESSAGE_UNHANDLED(handled = RenderWidget::OnMessageReceived(message))
IPC_END_MESSAGE_MAP()
+
+ if (!msg_is_ok) {
+ // The message had a handler, but its deserialization failed.
+ // Kill the renderer to avoid potential spoofing attacks.
+ CHECK(false) << "Unable to deserialize message in RenderView.";
+ }
+
return handled;
}