aboutsummaryrefslogtreecommitdiff
path: root/src/client/linux/minidump_writer/minidump_writer.cc
diff options
context:
space:
mode:
authorivan.penkov@gmail.com <ivan.penkov@gmail.com@4c0a9323-5329-0410-9bdc-e9ce6186880e>2013-05-21 17:05:35 +0000
committerivan.penkov@gmail.com <ivan.penkov@gmail.com@4c0a9323-5329-0410-9bdc-e9ce6186880e>2013-05-21 17:05:35 +0000
commit2b1f82e1c87d1170129dbf202cb1b99c4f85e27b (patch)
tree43a023bcfb98da7b0a2ae83a7695c921f60253e5 /src/client/linux/minidump_writer/minidump_writer.cc
parentSubmitting this on behalf of Xiaoling Bao. (diff)
downloadbreakpad-2b1f82e1c87d1170129dbf202cb1b99c4f85e27b.tar.xz
Fixing several instances of std::vector::operator[] out of range access
Review URL: https://breakpad.appspot.com/597002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1187 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/linux/minidump_writer/minidump_writer.cc')
-rw-r--r--src/client/linux/minidump_writer/minidump_writer.cc16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/client/linux/minidump_writer/minidump_writer.cc b/src/client/linux/minidump_writer/minidump_writer.cc
index 76c6e5a6..2cbf4352 100644
--- a/src/client/linux/minidump_writer/minidump_writer.cc
+++ b/src/client/linux/minidump_writer/minidump_writer.cc
@@ -1127,8 +1127,8 @@ class MinidumpWriter {
return false;
MDRawLinkMap entry;
entry.name = location.rva;
- entry.addr = (void*)map.l_addr;
- entry.ld = (void*)map.l_ld;
+ entry.addr = reinterpret_cast<void*>(map.l_addr);
+ entry.ld = reinterpret_cast<void*>(map.l_ld);
linkmap.CopyIndex(idx++, &entry);
}
}
@@ -1144,11 +1144,14 @@ class MinidumpWriter {
debug.get()->version = debug_entry.r_version;
debug.get()->map = linkmap_rva;
debug.get()->dso_count = dso_count;
- debug.get()->brk = (void*)debug_entry.r_brk;
- debug.get()->ldbase = (void*)debug_entry.r_ldbase;
+ debug.get()->brk = reinterpret_cast<void*>(debug_entry.r_brk);
+ debug.get()->ldbase = reinterpret_cast<void*>(debug_entry.r_ldbase);
debug.get()->dynamic = dynamic;
wasteful_vector<char> dso_debug_data(dumper_->allocator(), dynamic_length);
+ // The passed-in size to the constructor (above) is only a hint.
+ // Must call .resize() to do actual initialization of the elements.
+ dso_debug_data.resize(dynamic_length);
dumper_->CopyFromProcess(&dso_debug_data[0], GetCrashThread(), dynamic,
dynamic_length);
debug.CopyIndexAfterObject(0, &dso_debug_data[0], dynamic_length);
@@ -1420,10 +1423,11 @@ class MinidumpWriter {
const char* p = value;
if (value[0] == '0' && value[1] == 'x') {
p = my_read_hex_ptr(&result, value+2);
- } else if (entry->format == 'x')
+ } else if (entry->format == 'x') {
p = my_read_hex_ptr(&result, value);
- else
+ } else {
p = my_read_decimal_ptr(&result, value);
+ }
if (p == value)
continue;