diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-04 00:39:34 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-04 00:39:34 +0000 |
commit | 55181778eaf298eb2035f64d20a7ebe4e447a75e (patch) | |
tree | 691b9d2524539f3818f93c91db601a73632fa513 /chrome/browser/safe_browsing | |
parent | 0e3ff908d6a65ea0e86ebf6a0093d2f12f16034d (diff) | |
download | chromium_src-55181778eaf298eb2035f64d20a7ebe4e447a75e.zip chromium_src-55181778eaf298eb2035f64d20a7ebe4e447a75e.tar.gz chromium_src-55181778eaf298eb2035f64d20a7ebe4e447a75e.tar.bz2 |
Copy buffers in base::FileUtilProxy::{Read,Write} to avoid memory corruption.
If caller has called PPB_FileIO_Impl::Close() while a read or
write operation is in flight, and deletes the read or write buffer, we now avoid corrupting memory.
For Write, FileUtilProxy::Write simply copies the input buffer before passing control to the FILE thread. For Read, the caller no longer passes a buffer; instead, they are passed a const char* in the ReadCallback.
One caller of FileUtilProxy::Read outside of PPAPI was also updated.
BUG=70285
R=darin
Patch by Adam Klein (adamk@chromium.org)
Originally reviewed at http://codereview.chromium.org/6312040/
Review URL: http://codereview.chromium.org/6349090
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73714 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/safe_browsing')
-rw-r--r-- | chrome/browser/safe_browsing/client_side_detection_service.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chrome/browser/safe_browsing/client_side_detection_service.cc index 008a2d2..3d55132 100644 --- a/chrome/browser/safe_browsing/client_side_detection_service.cc +++ b/chrome/browser/safe_browsing/client_side_detection_service.cc @@ -161,7 +161,7 @@ void ClientSideDetectionService::CreateModelFileDone( base::PassPlatformFile file, bool created) { model_file_ = file.ReleaseValue(); - base::FileUtilProxy::ReadWriteCallback* cb = callback_factory_.NewCallback( + base::FileUtilProxy::WriteCallback* cb = callback_factory_.NewCallback( &ClientSideDetectionService::WriteModelFileDone); if (!created || base::PLATFORM_FILE_OK != error_code || |