processor: Bound number of exception parameters read
Bug: 1074532 Change-Id: I769074d7cbe0a47c8c8b716275d815e4b7f6dd63 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2168816 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
This commit is contained in:
parent
a2d3e8b2d5
commit
a7b621f810
3 changed files with 7 additions and 4 deletions
|
@ -529,7 +529,7 @@ static const size_t MDRawMemoryList_minsize = offsetof(MDRawMemoryList,
|
|||
memory_ranges[0]);
|
||||
|
||||
|
||||
#define MD_EXCEPTION_MAXIMUM_PARAMETERS 15
|
||||
#define MD_EXCEPTION_MAXIMUM_PARAMETERS 15u
|
||||
|
||||
typedef struct {
|
||||
uint32_t exception_code; /* Windows: MDExceptionCodeWin,
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
#include <assert.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
|
||||
#include "common/scoped_ptr.h"
|
||||
|
@ -128,8 +129,10 @@ ProcessResult MinidumpProcessor::Process(
|
|||
process_state->exception_record_.set_nested_exception_record_address(
|
||||
exception->exception()->exception_record.exception_record);
|
||||
process_state->exception_record_.set_address(process_state->crash_address_);
|
||||
for (uint32_t i = 0;
|
||||
i < exception->exception()->exception_record.number_parameters; i++) {
|
||||
const uint32_t num_parameters =
|
||||
std::min(exception->exception()->exception_record.number_parameters,
|
||||
MD_EXCEPTION_MAXIMUM_PARAMETERS);
|
||||
for (uint32_t i = 0; i < num_parameters; ++i) {
|
||||
process_state->exception_record_.add_parameter(
|
||||
exception->exception()->exception_record.exception_information[i],
|
||||
// TODO(ivanpe): Populate description.
|
||||
|
|
|
@ -332,7 +332,7 @@ Exception::Exception(const Dump &dump,
|
|||
D64(exception_address);
|
||||
D32(0); // number_parameters
|
||||
D32(0); // __align
|
||||
for (int i = 0; i < MD_EXCEPTION_MAXIMUM_PARAMETERS; ++i)
|
||||
for (size_t i = 0; i < MD_EXCEPTION_MAXIMUM_PARAMETERS; ++i)
|
||||
D64(0); // exception_information
|
||||
context.CiteLocationIn(this);
|
||||
assert(Size() == sizeof(MDRawExceptionStream));
|
||||
|
|
Loading…
Reference in a new issue