| Index: content/renderer/render_view.cc
|
| diff --git a/content/renderer/render_view.cc b/content/renderer/render_view.cc
|
| index 91d9c2d1b830ccf86ef71d2eb6598593e6043699..53932d2766389321622a49bd5b1c9ce0d18c3ea6 100644
|
| --- a/content/renderer/render_view.cc
|
| +++ b/content/renderer/render_view.cc
|
| @@ -581,7 +581,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)
|
| @@ -688,6 +689,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;
|
| }
|
|
|
|
|