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

Side by Side Diff: chrome/browser/safe_browsing/incident_reporting/module_integrity_verifier_win_unittest.cc

Issue 1513043002: clang/win: Let remaining chromium_code targets build with -Wextra. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/safe_browsing/incident_reporting/module_integrity_verif ier_win.h" 5 #include "chrome/browser/safe_browsing/incident_reporting/module_integrity_verif ier_win.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <map> 9 #include <map>
10 #include <vector> 10 #include <vector>
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 243
244 uint8_t* mem_code_addr = NULL; 244 uint8_t* mem_code_addr = NULL;
245 uint8_t* disk_code_addr = NULL; 245 uint8_t* disk_code_addr = NULL;
246 uint32_t code_size = 0; 246 uint32_t code_size = 0;
247 ASSERT_TRUE(GetCodeAddrsAndSize(*mem_peimage_ptr_, 247 ASSERT_TRUE(GetCodeAddrsAndSize(*mem_peimage_ptr_,
248 *disk_peimage_ptr_, 248 *disk_peimage_ptr_,
249 &mem_code_addr, 249 &mem_code_addr,
250 &disk_code_addr, 250 &disk_code_addr,
251 &code_size)); 251 &code_size));
252 252
253 const size_t kModificationSize = 256; 253 const int kModificationSize = 256;
254 // Write the modification at the end so it's not overlapping relocations 254 // Write the modification at the end so it's not overlapping relocations
255 const size_t modification_offset = code_size - kModificationSize; 255 const size_t modification_offset = code_size - kModificationSize;
256 ScopedModuleModifier<kModificationSize> mod( 256 ScopedModuleModifier<kModificationSize> mod(
257 mem_code_addr + modification_offset); 257 mem_code_addr + modification_offset);
258 258
259 state.Clear(); 259 state.Clear();
260 num_bytes_different = 0; 260 num_bytes_different = 0;
261 ASSERT_TRUE(VerifyModule(kTestDllNames[0], &state, &num_bytes_different)); 261 ASSERT_TRUE(VerifyModule(kTestDllNames[0], &state, &num_bytes_different));
262 ASSERT_TRUE(state.has_name()); 262 ASSERT_TRUE(state.has_name());
263 ASSERT_EQ(base::WideToUTF8(kTestDllNames[0]), state.name()); 263 ASSERT_EQ(base::WideToUTF8(kTestDllNames[0]), state.name());
(...skipping 28 matching lines...) Expand all
292 uint8_t* mem_code_addr = NULL; 292 uint8_t* mem_code_addr = NULL;
293 uint8_t* disk_code_addr = NULL; 293 uint8_t* disk_code_addr = NULL;
294 uint32_t code_size = 0; 294 uint32_t code_size = 0;
295 ASSERT_TRUE(GetCodeAddrsAndSize(*mem_peimage_ptr_, 295 ASSERT_TRUE(GetCodeAddrsAndSize(*mem_peimage_ptr_,
296 *disk_peimage_ptr_, 296 *disk_peimage_ptr_,
297 &mem_code_addr, 297 &mem_code_addr,
298 &disk_code_addr, 298 &disk_code_addr,
299 &code_size)); 299 &code_size));
300 300
301 // Modify the first hunk of the code, which contains many relocs. 301 // Modify the first hunk of the code, which contains many relocs.
302 const size_t kModificationSize = 256; 302 const int kModificationSize = 256;
303 ScopedModuleModifier<kModificationSize> mod(mem_code_addr); 303 ScopedModuleModifier<kModificationSize> mod(mem_code_addr);
304 304
305 state.Clear(); 305 state.Clear();
306 num_bytes_different = 0; 306 num_bytes_different = 0;
307 ASSERT_TRUE(VerifyModule(kTestDllNames[0], &state, &num_bytes_different)); 307 ASSERT_TRUE(VerifyModule(kTestDllNames[0], &state, &num_bytes_different));
308 ASSERT_TRUE(state.has_name()); 308 ASSERT_TRUE(state.has_name());
309 ASSERT_EQ(base::WideToUTF8(kTestDllNames[0]), state.name()); 309 ASSERT_EQ(base::WideToUTF8(kTestDllNames[0]), state.name());
310 ASSERT_TRUE(state.has_modified_state()); 310 ASSERT_TRUE(state.has_modified_state());
311 ASSERT_EQ(ModuleState::MODULE_STATE_MODIFIED, state.modified_state()); 311 ASSERT_EQ(ModuleState::MODULE_STATE_MODIFIED, state.modified_state());
312 ASSERT_EQ(kModificationSize, num_bytes_different); 312 ASSERT_EQ(kModificationSize, num_bytes_different);
313 313
314 // Modifications across the relocs should have been coalesced into one. 314 // Modifications across the relocs should have been coalesced into one.
315 ASSERT_EQ(1, state.modification_size()); 315 ASSERT_EQ(1, state.modification_size());
316 ASSERT_EQ(kModificationSize, state.modification(0).byte_count()); 316 ASSERT_EQ(kModificationSize, state.modification(0).byte_count());
317 ASSERT_EQ(kModificationSize, state.modification(0).modified_bytes().size()); 317 ASSERT_EQ(static_cast<size_t>(kModificationSize),
318 state.modification(0).modified_bytes().size());
318 EXPECT_EQ(std::string(mem_code_addr, mem_code_addr + kModificationSize), 319 EXPECT_EQ(std::string(mem_code_addr, mem_code_addr + kModificationSize),
319 state.modification(0).modified_bytes()); 320 state.modification(0).modified_bytes());
320 } 321 }
321 322
322 TEST_F(SafeBrowsingModuleVerifierWinTest, VerifyModuleExportModified) { 323 TEST_F(SafeBrowsingModuleVerifierWinTest, VerifyModuleExportModified) {
323 ModuleState state; 324 ModuleState state;
324 int num_bytes_different = 0; 325 int num_bytes_different = 0;
325 // Confirm the module is identical in memory as on disk before we begin. 326 // Confirm the module is identical in memory as on disk before we begin.
326 SetUpTestDllAndPEImages(); 327 SetUpTestDllAndPEImages();
327 ASSERT_TRUE(VerifyModule(kTestDllNames[0], &state, &num_bytes_different)); 328 ASSERT_TRUE(VerifyModule(kTestDllNames[0], &state, &num_bytes_different));
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 388
388 // One of the two exports now has two modifications. 389 // One of the two exports now has two modifications.
389 BuildModificationMap(state, &modification_map); 390 BuildModificationMap(state, &modification_map);
390 ASSERT_EQ(2U, modification_map.size()); 391 ASSERT_EQ(2U, modification_map.size());
391 ASSERT_EQ(3U, (modification_map.begin()->second.size() + 392 ASSERT_EQ(3U, (modification_map.begin()->second.size() +
392 (++modification_map.begin())->second.size())); 393 (++modification_map.begin())->second.size()));
393 } 394 }
394 #endif // ADDRESS_SANITIZER 395 #endif // ADDRESS_SANITIZER
395 396
396 } // namespace safe_browsing 397 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698