diff options
author | ivan.penkov@gmail.com <ivan.penkov@gmail.com@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2013-05-21 17:05:35 +0000 |
---|---|---|
committer | ivan.penkov@gmail.com <ivan.penkov@gmail.com@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2013-05-21 17:05:35 +0000 |
commit | 2b1f82e1c87d1170129dbf202cb1b99c4f85e27b (patch) | |
tree | 43a023bcfb98da7b0a2ae83a7695c921f60253e5 /src/client/linux/minidump_writer/linux_dumper.cc | |
parent | Submitting this on behalf of Xiaoling Bao. (diff) | |
download | breakpad-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/linux_dumper.cc')
-rw-r--r-- | src/client/linux/minidump_writer/linux_dumper.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/client/linux/minidump_writer/linux_dumper.cc b/src/client/linux/minidump_writer/linux_dumper.cc index e5a341ca..e09da916 100644 --- a/src/client/linux/minidump_writer/linux_dumper.cc +++ b/src/client/linux/minidump_writer/linux_dumper.cc @@ -77,6 +77,9 @@ LinuxDumper::LinuxDumper(pid_t pid) threads_(&allocator_, 8), mappings_(&allocator_), auxv_(&allocator_, AT_MAX + 1) { + // The passed-in size to the constructor (above) is only a hint. + // Must call .resize() to do actual initialization of the elements. + auxv_.resize(AT_MAX + 1); } LinuxDumper::~LinuxDumper() { @@ -90,8 +93,7 @@ bool LinuxDumper::ElfFileIdentifierForMapping(const MappingInfo& mapping, bool member, unsigned int mapping_id, - uint8_t identifier[sizeof(MDGUID)]) -{ + uint8_t identifier[sizeof(MDGUID)]) { assert(!member || mapping_id < mappings_.size()); my_memset(identifier, 0, sizeof(MDGUID)); if (IsMappedFileOpenUnsafe(mapping)) @@ -273,7 +275,8 @@ bool LinuxDumper::GetStackInfo(const void** stack, size_t* stack_len, const MappingInfo* mapping = FindMapping(stack_pointer); if (!mapping) return false; - const ptrdiff_t offset = stack_pointer - (uint8_t*) mapping->start_addr; + const ptrdiff_t offset = stack_pointer - + reinterpret_cast<uint8_t*>(mapping->start_addr); const ptrdiff_t distance_to_end = static_cast<ptrdiff_t>(mapping->size) - offset; *stack_len = distance_to_end > kStackToCapture ? |