aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Moinvaziri <nathan.moinvaziri@gmail.com>2024-03-08 18:19:33 -0800
committerIvan Penkov <ivanpe@chromium.org>2024-03-12 17:25:28 +0000
commit26666b80bac3254787976bb7be52db3f4a303663 (patch)
treeec7449fa765da8201660327e815b1316554363bf
parentf032e4c3b4eaef64432482cb00eb0c3df33cde48 (diff)
downloadgoogle-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.cc8
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;