Index: content/browser/renderer_host/render_view_host_impl.cc |
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc |
index 190545d1e8e51920cee75acfffbcc953f2e05d7e..b5839aa2483aa1eb762220a4e028ff0e57f27db2 100644 |
--- a/content/browser/renderer_host/render_view_host_impl.cc |
+++ b/content/browser/renderer_host/render_view_host_impl.cc |
@@ -1395,6 +1395,14 @@ void RenderViewHostImpl::OnDidZoomURL(double zoom_level, |
} |
void RenderViewHostImpl::OnRunFileChooser(const FileChooserParams& params) { |
+ // Do not allow messages with absolute paths in them as this can permit a |
+ // renderer to coerce the browser to perform I/O on a renderer controlled |
+ // path. |
+ if (params.default_file_name != params.default_file_name.BaseName()) { |
+ GetProcess()->ReceivedBadMessage(); |
+ return; |
+ } |
+ |
delegate_->RunFileChooser(this, params); |
} |