| Index: chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.cc
|
| diff --git a/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.cc b/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.cc
|
| index 5fea3088573e2429433d991bd405b56a84e1e086..83885a2ca2b8924b63849e6d2931546da3ce546b 100644
|
| --- a/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.cc
|
| +++ b/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.cc
|
| @@ -130,67 +130,31 @@ void CollectModuleVerificationData(
|
| size_t num_modules_to_verify,
|
| ClientIncidentReport_EnvironmentData_Process* process) {
|
| #if !defined(_WIN64)
|
| + using ModuleState = ClientIncidentReport_EnvironmentData_Process_ModuleState;
|
| +
|
| for (size_t i = 0; i < num_modules_to_verify; ++i) {
|
| - scoped_ptr<ClientIncidentReport_EnvironmentData_Process_ModuleState>
|
| - module_state(
|
| - new ClientIncidentReport_EnvironmentData_Process_ModuleState());
|
| + scoped_ptr<ModuleState> module_state(new ModuleState());
|
|
|
| - VerificationResult result = NewVerifyModule(modules_to_verify[i],
|
| - module_state.get());
|
| + int num_bytes_different = 0;
|
| + bool scan_complete = VerifyModule(modules_to_verify[i],
|
| + module_state.get(),
|
| + &num_bytes_different);
|
|
|
| - std::set<std::string> modified_exports;
|
| - int num_bytes = 0;
|
| - int modified = VerifyModule(modules_to_verify[i],
|
| - &modified_exports,
|
| - &num_bytes);
|
| + if (module_state->modified_state() == ModuleState::MODULE_STATE_UNMODIFIED)
|
| + continue;
|
|
|
| - if (result.state == MODULE_STATE_MODIFIED) {
|
| + if (module_state->modified_state() == ModuleState::MODULE_STATE_MODIFIED) {
|
| UMA_HISTOGRAM_COUNTS_10000(
|
| "ModuleIntegrityVerification.BytesModified.WithoutByteSet",
|
| - result.num_bytes_different);
|
| - }
|
| -
|
| - if (modified == MODULE_STATE_MODIFIED) {
|
| - UMA_HISTOGRAM_COUNTS_10000(
|
| - "ModuleIntegrityVerification.BytesModified.WithByteSet",
|
| - num_bytes);
|
| + num_bytes_different);
|
| }
|
|
|
| - if (modified == MODULE_STATE_MODIFIED ||
|
| - result.state == MODULE_STATE_MODIFIED) {
|
| - int difference = abs(result.num_bytes_different - num_bytes);
|
| -
|
| - if (result.num_bytes_different > num_bytes) {
|
| - UMA_HISTOGRAM_COUNTS_10000(
|
| - "ModuleIntegrityVerification.Difference.WithoutByteSet",
|
| - difference);
|
| - } else if (num_bytes > result.num_bytes_different) {
|
| - UMA_HISTOGRAM_COUNTS_10000(
|
| - "ModuleIntegrityVerification.Difference.WithByteSet",
|
| - difference);
|
| - }
|
| - }
|
| -
|
| - if (!result.verification_completed) {
|
| + if (!scan_complete) {
|
| UMA_HISTOGRAM_ENUMERATION(
|
| "ModuleIntegrityVerification.RelocationsUnordered", i,
|
| num_modules_to_verify);
|
| }
|
|
|
| - if (modified == MODULE_STATE_UNMODIFIED)
|
| - continue;
|
| -
|
| - module_state->set_name(base::WideToUTF8(modules_to_verify[i]));
|
| - // Add 1 to the ModuleState enum to get the corresponding value in the
|
| - // protobuf's ModuleState enum.
|
| - module_state->set_modified_state(static_cast<
|
| - ClientIncidentReport_EnvironmentData_Process_ModuleState_ModifiedState>(
|
| - modified + 1));
|
| - for (std::set<std::string>::iterator it = modified_exports.begin();
|
| - it != modified_exports.end();
|
| - ++it) {
|
| - module_state->add_modified_export(*it);
|
| - }
|
| process->mutable_module_state()->AddAllocated(module_state.release());
|
| }
|
| #endif // _WIN64
|
|
|