diff options
author | creis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-04 22:55:40 +0000 |
---|---|---|
committer | creis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-04 22:55:40 +0000 |
commit | ffc906fceebee86a962e45ab039b254a8ad11046 (patch) | |
tree | 2f9d1705e67687e8fb460b3dce1b011597f90f95 /content/renderer | |
parent | ff300b44a319f603ac4c4af6abc1f07897e96816 (diff) | |
download | chromium_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.cc | 10 |
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; } |