diff options
author | Ivan Penkov <ivanpe@chromium.org> | 2016-06-20 11:14:47 -0700 |
---|---|---|
committer | Ivan Penkov <ivanpe@chromium.org> | 2016-06-20 11:14:47 -0700 |
commit | 24f5931c5e0120982c0cbf1896641e3ef2bdd52f (patch) | |
tree | 68b24e2ded67b0cabcfb7c6e534e17640997e7b9 /src/google_breakpad/processor/code_module.h | |
parent | linux-syscall-support: pull in latest version (diff) | |
download | breakpad-24f5931c5e0120982c0cbf1896641e3ef2bdd52f.tar.xz |
Server-side workaround to handle overlapping modules.
This change is resolving an issue that was caused by the combination of:
- Android system libraries being relro packed in N+.
- Breakpad dealing with relro packed libraries in a hack way.
This is a fix for http://crbug/611824.
I also found an use-after-free issue (bug in Minidump::SeekToStreamType). I disallowed the MinidumpStreamInfo copy and assign constructors and the compiler detected another similar issue in Minidump::Print. Then I disabled the copy and assign constructors for most classes in minidump.h (just in case). There are a couple of classes where I couldn't disallow them (since assign is used). This will require a small refactor so I left it out of this CL.
R=mark@chromium.org
Review URL: https://codereview.chromium.org/2060663002 .
Diffstat (limited to 'src/google_breakpad/processor/code_module.h')
-rw-r--r-- | src/google_breakpad/processor/code_module.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/google_breakpad/processor/code_module.h b/src/google_breakpad/processor/code_module.h index 4e892824..b139907c 100644 --- a/src/google_breakpad/processor/code_module.h +++ b/src/google_breakpad/processor/code_module.h @@ -86,7 +86,14 @@ class CodeModule { // ownership of. The new CodeModule may be of a different concrete class // than the CodeModule being copied, but will behave identically to the // copied CodeModule as far as the CodeModule interface is concerned. - virtual const CodeModule* Copy() const = 0; + virtual CodeModule* Copy() const = 0; + + // Getter and setter for shrink_down_delta. This is used when the address + // range for a module is shrunk down due to address range conflicts with + // other modules. The base_address and size fields are not updated and they + // should always reflect the original values (reported in the minidump). + virtual uint64_t shrink_down_delta() const = 0; + virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) = 0; }; } // namespace google_breakpad |