diff options
author | Nathan Moinvaziri <nathan.moinvaziri@gmail.com> | 2024-03-08 18:19:33 -0800 |
---|---|---|
committer | Ivan Penkov <ivanpe@chromium.org> | 2024-03-12 17:25:28 +0000 |
commit | 26666b80bac3254787976bb7be52db3f4a303663 (patch) | |
tree | ec7449fa765da8201660327e815b1316554363bf | |
parent | f032e4c3b4eaef64432482cb00eb0c3df33cde48 (diff) | |
download | google-breakpad-26666b80bac3254787976bb7be52db3f4a303663.tar.gz |
Check for failed seek when skipping x86 xstate data
After reading minidump context with x86 xstate data, we seek past it, so
there needs to be a check to see that the seek operation did not fail.
Change-Id: I8ed4394e452c435234116d97fd65856345cb618a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/5324600
Reviewed-by: Mike Frysinger <vapier@chromium.org>
-rw-r--r-- | src/processor/minidump.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc index 3de36784..22dce762 100644 --- a/src/processor/minidump.cc +++ b/src/processor/minidump.cc @@ -903,8 +903,12 @@ bool MinidumpContext::Read(uint32_t expected_size) { // Skip extended xstate data if present in X86 context. if (context_flags & MD_CONTEXT_X86_XSTATE) { - minidump_->SeekSet((minidump_->Tell() - sizeof(MDRawContextX86)) + - expected_size); + if (!minidump_->SeekSet( + (minidump_->Tell() - sizeof(MDRawContextX86)) + + expected_size)) { + BPLOG(ERROR) << "MinidumpContext cannot seek to past xstate data"; + return false; + } } break; |