diff options
Diffstat (limited to 'src/processor/minidump_processor_unittest.cc')
-rw-r--r-- | src/processor/minidump_processor_unittest.cc | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/processor/minidump_processor_unittest.cc b/src/processor/minidump_processor_unittest.cc index d0d8b780..9395cc2d 100644 --- a/src/processor/minidump_processor_unittest.cc +++ b/src/processor/minidump_processor_unittest.cc @@ -188,7 +188,8 @@ class TestSymbolSupplier : public SymbolSupplier { virtual SymbolResult GetCStringSymbolData(const CodeModule *module, const SystemInfo *system_info, string *symbol_file, - char **symbol_data); + char **symbol_data, + size_t *symbol_data_size); virtual void FreeSymbolData(const CodeModule *module); @@ -248,21 +249,23 @@ SymbolSupplier::SymbolResult TestSymbolSupplier::GetCStringSymbolData( const CodeModule *module, const SystemInfo *system_info, string *symbol_file, - char **symbol_data) { + char **symbol_data, + size_t *symbol_data_size) { string symbol_data_string; SymbolSupplier::SymbolResult s = GetSymbolFile(module, system_info, symbol_file, &symbol_data_string); if (s == FOUND) { - unsigned int size = symbol_data_string.size() + 1; - *symbol_data = new char[size]; + *symbol_data_size = symbol_data_string.size() + 1; + *symbol_data = new char[*symbol_data_size]; if (*symbol_data == NULL) { BPLOG(ERROR) << "Memory allocation failed for module: " - << module->code_file() << " size: " << size; + << module->code_file() << " size: " << *symbol_data_size; return INTERRUPT; } - strcpy(*symbol_data, symbol_data_string.c_str()); + memcpy(*symbol_data, symbol_data_string.c_str(), symbol_data_string.size()); + (*symbol_data)[symbol_data_string.size()] = '\0'; memory_buffers_.insert(make_pair(module->code_file(), *symbol_data)); } @@ -348,11 +351,11 @@ TEST_F(MinidumpProcessorTest, TestSymbolSupplierLookupCounts) { EXPECT_CALL(supplier, GetCStringSymbolData( Property(&google_breakpad::CodeModule::code_file, "c:\\test_app.exe"), - _, _, _)).WillOnce(Return(SymbolSupplier::NOT_FOUND)); + _, _, _, _)).WillOnce(Return(SymbolSupplier::NOT_FOUND)); EXPECT_CALL(supplier, GetCStringSymbolData( Property(&google_breakpad::CodeModule::code_file, Ne("c:\\test_app.exe")), - _, _, _)).WillRepeatedly(Return(SymbolSupplier::NOT_FOUND)); + _, _, _, _)).WillRepeatedly(Return(SymbolSupplier::NOT_FOUND)); // Avoid GMOCK WARNING "Uninteresting mock function call - returning // directly" for FreeSymbolData(). EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber()); @@ -366,11 +369,11 @@ TEST_F(MinidumpProcessorTest, TestSymbolSupplierLookupCounts) { EXPECT_CALL(supplier, GetCStringSymbolData( Property(&google_breakpad::CodeModule::code_file, "c:\\test_app.exe"), - _, _, _)).WillOnce(Return(SymbolSupplier::NOT_FOUND)); + _, _, _, _)).WillOnce(Return(SymbolSupplier::NOT_FOUND)); EXPECT_CALL(supplier, GetCStringSymbolData( Property(&google_breakpad::CodeModule::code_file, Ne("c:\\test_app.exe")), - _, _, _)).WillRepeatedly(Return(SymbolSupplier::NOT_FOUND)); + _, _, _, _)).WillRepeatedly(Return(SymbolSupplier::NOT_FOUND)); // Avoid GMOCK WARNING "Uninteresting mock function call - returning // directly" for FreeSymbolData(). EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber()); |