Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(421)

Side by Side Diff: base/file_version_info_win.cc

Issue 4222005: Turn on file access checks on Win. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Second try Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/file_util_win.cc ('k') | base/platform_file_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/file_version_info_win.h" 5 #include "base/file_version_info_win.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 8
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_version_info.h" 10 #include "base/file_version_info.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/thread_restrictions.h"
13 14
14 // This has to be last. 15 // This has to be last.
15 #include <strsafe.h> 16 #include <strsafe.h>
16 17
17 FileVersionInfoWin::FileVersionInfoWin(void* data, int language, int code_page) 18 FileVersionInfoWin::FileVersionInfoWin(void* data, int language, int code_page)
18 : language_(language), code_page_(code_page) { 19 : language_(language), code_page_(code_page) {
20 base::ThreadRestrictions::AssertIOAllowed();
19 data_.reset((char*) data); 21 data_.reset((char*) data);
20 fixed_file_info_ = NULL; 22 fixed_file_info_ = NULL;
21 UINT size; 23 UINT size;
22 ::VerQueryValue(data_.get(), L"\\", (LPVOID*)&fixed_file_info_, &size); 24 ::VerQueryValue(data_.get(), L"\\", (LPVOID*)&fixed_file_info_, &size);
23 } 25 }
24 26
25 FileVersionInfoWin::~FileVersionInfoWin() { 27 FileVersionInfoWin::~FileVersionInfoWin() {
26 DCHECK(data_.get()); 28 DCHECK(data_.get());
27 } 29 }
28 30
29 typedef struct { 31 typedef struct {
30 WORD language; 32 WORD language;
31 WORD code_page; 33 WORD code_page;
32 } LanguageAndCodePage; 34 } LanguageAndCodePage;
33 35
34 // static 36 // static
35 FileVersionInfo* FileVersionInfo::CreateFileVersionInfoForCurrentModule() { 37 FileVersionInfo* FileVersionInfo::CreateFileVersionInfoForCurrentModule() {
36 FilePath app_path; 38 FilePath app_path;
37 if (!PathService::Get(base::FILE_MODULE, &app_path)) 39 if (!PathService::Get(base::FILE_MODULE, &app_path))
38 return NULL; 40 return NULL;
39 41
40 return CreateFileVersionInfo(app_path); 42 return CreateFileVersionInfo(app_path);
41 } 43 }
42 44
43 // static 45 // static
44 FileVersionInfo* FileVersionInfo::CreateFileVersionInfo( 46 FileVersionInfo* FileVersionInfo::CreateFileVersionInfo(
45 const FilePath& file_path) { 47 const FilePath& file_path) {
48 base::ThreadRestrictions::AssertIOAllowed();
49
46 DWORD dummy; 50 DWORD dummy;
47 const wchar_t* path = file_path.value().c_str(); 51 const wchar_t* path = file_path.value().c_str();
48 DWORD length = ::GetFileVersionInfoSize(path, &dummy); 52 DWORD length = ::GetFileVersionInfoSize(path, &dummy);
49 if (length == 0) 53 if (length == 0)
50 return NULL; 54 return NULL;
51 55
52 void* data = calloc(length, 1); 56 void* data = calloc(length, 1);
53 if (!data) 57 if (!data)
54 return NULL; 58 return NULL;
55 59
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 return false; 183 return false;
180 } 184 }
181 185
182 std::wstring FileVersionInfoWin::GetStringValue(const wchar_t* name) { 186 std::wstring FileVersionInfoWin::GetStringValue(const wchar_t* name) {
183 std::wstring str; 187 std::wstring str;
184 if (GetValue(name, &str)) 188 if (GetValue(name, &str))
185 return str; 189 return str;
186 else 190 else
187 return L""; 191 return L"";
188 } 192 }
OLDNEW
« no previous file with comments | « base/file_util_win.cc ('k') | base/platform_file_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698