Commit graph

2068 commits

Author SHA1 Message Date
Mike Frysinger d31ce76161 gyp: drop unused build system
Chromium moved to GN a long time ago, and CrOS has never used this.
Let's remove one of the build systems to make it easier on people.
Especially since the GYP tool is completely unmaintained now.

Change-Id: I0371ca1427811f307dc30f88ed6d1bf61d7fab89
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4054941
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-12-05 01:38:54 +00:00
Leonard Grey 87b60390f0 Mac: add option to dump_syms to mark folded symbols
Bug: google-breakpad:751
Change-Id: I12afcc8399fa9808aace9f465622bd074eab13f4
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4034827
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-12-01 20:20:39 +00:00
Marvin Scholz 9aa786f03d Restructure Makefile conditionals/targets
As the conditionals and targets was becoming quite hard to
grasp with lots of conditionals applied unnecessarily to target
properties, there were issues with targets being defined without
any sources.
This commit fixes that while restructuring the Makefile so that
all targets are declared (conditionally if needed) upfront and
then all the target properties are defined (source, flags, deps, etc.)

Change-Id: I666d153c476fbf1aafabb89cee7af4eee5795ab6
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3928024
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-11-29 09:27:01 +00:00
Mark Brand 41474d905f Fix Linux ASan Afl build error.
Bug: 1385147
Change-Id: I69ebfa1adbc1c2a17decf0079812c4f507e3332c
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4046961
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-11-22 14:03:08 +00:00
Nelson Billing 4d0c21b9a5 Add a flag to google_converter to keep Breakpad/PE/PDB files after conversion.
Change-Id: I8948e1aba598d42369d70ca1cc1168ce3841ab40
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4038509
Reviewed-by: Zequan Wu <zequanwu@google.com>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-11-21 20:47:11 +00:00
Nelson Billing c7acbcef04 Fix Windows native symbol uploads.
- We were appending a CRLF to uploaded files, which is okay for Breakpad
  symbols but breaks binaries (PE/PDB).
- Removed the CRLF after files in the request body to fix issue. Tested with
  Breakpad, PE, and PDB uploads.

Change-Id: I95ee7c51bf981cdb2e55cc720a7813cf7afa21ce
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4038506
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Zequan Wu <zequanwu@google.com>
2022-11-21 20:46:50 +00:00
Leonard Grey 522bd2337a Speed up testing for multiple functions at an address on Posix
The way this was originally written blows up on large enough targets
(like...Chromium :/). This change adds a set for amortized constant
time lookup of whether a FUNC already exists at a given address.

Bug: google-breakpad:751
Change-Id: I10a322da70f769c106e1e5f5b2dc3dc3f79444fd
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4031580
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-11-17 18:38:51 +00:00
Lei Zhang 442456a68c Fix compile error in disassembler_objdump.cc for non-Linux build.
A couple of pointer parameters should be references instead.

Change-Id: Ic1850d9330194374f7fe2108815267ede6f3ca32
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4021971
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-11-14 22:12:41 +00:00
Leonard Grey 989f862134 Support marking folded symbols on Posix
This is similar to the Windows change at
https://chromium-review.googlesource.com/c/breakpad/breakpad/+/773418/

When a `Module` is created with `enable_multiple_field_` = true,
all FUNCs and PUBLICs that share the same address will be collapsed
into a single entry, and that entry will be marked with `m` for
multiple in the final output.

`enable_multiple_field_` is temporary just in case people are
depending on the current behavior.

Support for `dump_syms` executables will be added in a follow-up.

Bug: google-breakpad:751
Change-Id: I631a148ed00138924c7bcb5ad6db8b9a6610dd03
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3905122
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-11-01 16:53:01 +00:00
Christopher Di Bella 1f9903c161 names anonymous structs in elfutils.h
Fixed: chromium:1378800
Change-Id: I8215c091c72e796b1683753e2512d6e6adc4167f
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3984802
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-10-27 02:55:38 +00:00
Konstantin Mandrika de086a9859 Add support for compressed section headers to dump_syms.
Change-Id: I019cc9ffd66850ec5259f6dfcd9af8ac6c37d2c0
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3938926
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-10-26 20:29:20 +00:00
mingtaoxt xt 7ea7ded187 mainline version gcc-13 cannot use "uintptr_t" via "#include <string>"
Change-Id: I0049bb92658b4226e32783ad4d8271787deef5f3
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3964166
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-10-20 09:36:42 +00:00
mingtaoxt xt 73c29370ce Update LSS dep to the latest commit
Change-Id: I39e459f519922433de82c62385d08c6db34328f0
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3964165
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-10-19 12:36:01 +00:00
Christopher Di Bella b90119e3f3 replaces sizeof(raw_context) with sizeof(*raw_context)
Using `sizeof(raw_context)` generates the following warning (which is
an error in ChromeOS):

```
'memset' call operates on objects of type 'MDRawContextX86' while the size
is based on a different type 'MDRawContextX86 *'
```

This commit follows the implied advice of this warning and adjusts the
expression.

Bug: b:238678030, b:243982778
Test: Locally
Change-Id: I26111c6ff7a1223223e6096a75ad52c48d941e89
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3960915
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-10-17 20:41:17 +00:00
Christopher Di Bella f9bf260e94 enables C++17 mode
Breakpad has started to use C++17 features, and needs to be compiled
using C++17.

Bug: b:238678030, b:243982778
Test: Locally, CQ
Change-Id: Ia339f0815d2efd2a49fa9b788044b5b0163f95fa
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3954471
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-10-14 19:08:12 +00:00
Christopher Di Bella ef443fbf77 Changes FunctionNames.Mangled to check for regex instead of equality
The demangled name has recently joined two angle brackets, where there
was previously a space. This commit makes it possible for both options
to pass, since they're both valid source.

Bug: b:238678030
Test: Tested locally
Fixed: b:243982778
Change-Id: Ic4464709fb8cc5c730a9d14a8627294b24ae70c3
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3949474
Reviewed-by: Lei Zhang <thestig@chromium.org>
2022-10-12 19:22:15 +00:00
Mark Brand 57d1743662 Fixup non-canonical fault addresses for amd64.
This uses DisassemblerObjdump to add a processing step in
MinidumpProcessor to compute the true faulting address from register
state and disassembly of the fault instruction when the fault address
is suspicious (-1).

Bug: 901847
Change-Id: Ia1f77d542c4055c82ce2504db8c84a9e52001866
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3932957
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-10-12 17:32:28 +00:00
Mark Brand 6289830b67 Add DisassemblerObjdump.
This extracts the existing objdump-based disassembler engine used in
ExploitabilityLinux into a seperate reusable class, and adds support
for most common address operand formats.

This is a precursor to using DisassemblerObjdump to handle address
resolution for non-canonical address dereferences on amd64.

Bug: 901847
Change-Id: I1a06a86fc2e7c76b4d0e79eca5f8a6c501379f47
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3720740
Reviewed-by: Ivan Penkov <ivanpe@google.com>
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-10-12 17:19:44 +00:00
Marvin Scholz bcffe4fe60 test: exploitability: Fix preprocessor guards for Linux
Guard the Linux specific tests by checking for __linux__, as it does
not only not work on Windows but not on macOS either.
Change-Id: I0e710a6da8e6686f11bc8ea23e07ac19f3b4beb2
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3928026
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-30 12:24:06 +00:00
Leonard Grey e3af4457b8 Clean up module_unittest
This change rewrites the tests to have `Module` as a prefix and
rearranges them a little. This is prep for adding this file to
breakpad_unittests Chromium-side.

Bug: google-breakpad:751
Change-Id: I8a77f60a0080d06af13dd30d9cf7627dce045d90
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3915004
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-09-22 19:52:43 +00:00
Iacopo Colonnelli 28cf16bc34 Added riscv and riscv64 support for Linux
Change-Id: I62cd157d00a87720db001072662a81d8eb9112b0
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3873291
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-09 08:44:46 +00:00
Iacopo Colonnelli e059dad5ea Polling in ParallelChildCrashesDontHang test
Instead of (arbitrarily) wait 1s for the child process to terminate, the
parent now polls the child process every 100ms to check if it's
terminated, and it does so for a much longer total time of 10s.

This implementation ensures correct check for slower architectures, and
fast success for faster ones.

Change-Id: I2ff38458bf747de5b74268a4e22fd6164450419b
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3876346
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-08 08:32:08 +00:00
Mark Mentovai 4febb34583 Update copyright boilerplate, 2022 edition (Breakpad)
sed -i '' -E -e 's/Copyright (\(c\) )?([0-9-]+),? (Google|The Chromium Authors).*(\r)?$/Copyright \2 Google LLC\4/' -e '/^((\/\/|#| \*) )?All rights reserved\.?\r?$/d' -e 's/name of Google Inc\. nor the/name of Google LLC nor the/' -e 's/POSSIBILITY OF SUCH DAMAGE$/POSSIBILITY OF SUCH DAMAGE./' $(git grep -El 'Copyright (\(c\) )?([0-9-]+),? (Google|The Chromium Authors).*$')

Plus manual fixes for src/processor/disassembler_x86.{cc,h}.

Plus some conversions from CRLF to LF line endings in .cc and .h files.

Bug: chromium:1098010
Change-Id: I8030e804eecd9f5a1ec9d66ae166efd8418c2a67
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3878302
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-07 16:59:53 +00:00
Lei Zhang 00f76018cc Fix fread() check in ExploitabilityLinux.
This fread() call did not intend to always fill the buffer, so the
change in https://crrev.com/c/3872234 is incorrect. Revert that one line
change.

Change-Id: I3fbe38fce11c24aa77b39dc229c7c5ed2a8d6960
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3879289
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-07 16:46:48 +00:00
GlassOfWhiskey e69677e93d Added crash context float state flag
Instead of listing everywhere the set of architectures that do not
require/support explicit float state in their crash context, a new
GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE preprocessor macro has
been defined.

Adding novel architectures will only require to manage the
macro definition in a single place.

Change-Id: I2732982f2cdfc9fcd2f71d6e5e122617faff9e82
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3876345
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-07 12:28:57 +00:00
Lei Zhang 30c7f3cfc1 Fix some Coverity defects.
Fix a few issues Coverity detected in exploitability_linux.cc:

CID 277681, 277682, 277683

Change-Id: I8ad0581f075da7346b9be8100b3690555a358b16
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3872234
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-06 16:28:56 +00:00
GlassOfWhiskey 5d6d250150 Update LSS dep to the last commit
Change-Id: I35f35d9d31d97c8237f0d90170be04716d820028
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3873644
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-06 12:53:40 +00:00
Joshua Peraza 46e00d30cd fix includes
Change-Id: Ibfe719c3ed303cd45884863746cf07ec22dba45d
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3863388
Reviewed-by: Nelson Billing <nbilling@google.com>
2022-08-30 21:25:28 +00:00
Nelson Billing cb55d48154 Add product name metadata to converter and symupload.
Change-Id: Iefea0aea13deb86d71d663c8344a2d3c658caf4a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756171
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-08-22 19:48:52 +00:00
Mirko Bonadei e085b3b50b Fix -Wdeprecated-declarations when macOS 13 SDK is used.
This CL fixes the following error detected on a WebRTC bot:

FAILED: obj/third_party/breakpad/utilities/ConfigFile.o
/opt/s/w/ir/cache/goma/client/gomacc ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/third_party/breakpad/utilities/ConfigFile.o.d -DCR_XCODE_VERSION=1400 -DCR_CLANG_REVISION=\"llvmorg-16-init-907-g8b740747-1\" -D_LIBCPP_ABI_NAMESPACE=Cr -D_LIBCPP_ABI_VERSION=2 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_NODISCARD -DCR_LIBCXX_REVISION=9f503bebdb9a89f5ee82b82142109b26d688f40c -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -I../.. -Igen -I../../buildtools/third_party/libc++ -I../../third_party/breakpad/breakpad/src  -fno-delete-null-pointer-checks -fno-ident -fno-strict-aliasing -fstack-protector -femit-dwarf-unwind=no-compact-unwind -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -ffp-contract=off -fcomplete-member-pointers -arch x86_64 -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -ffile-compilation-dir=. -no-canonical-prefixes -ftrivial-auto-var-init=pattern -O2 -fno-omit-frame-pointer -g2 -gdwarf-aranges -Xclang -debug-info-kind=limited -isysroot sdk/xcode_links/MacOSX13.0.sdk -mmacos-version-min=10.13 -fvisibility=hidden -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang raw-ref-template-as-trivial-member -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Werror -Wall -Wno-unused-variable -Wno-c++11-narrowing -Wno-unused-but-set-variable -Wno-misleading-indentation -Wunguarded-availability -Wno-missing-field-initializers -Wno-unused-parameter -Wloop-analysis -Wno-unneeded-internal-declaration -Wenum-compare-conditional -Wno-psabi -Wno-ignored-pragma-optimize -Wno-deprecated-builtins -std=c++17 -Wno-trigraphs -fobjc-call-cxx-cdtors -fno-exceptions -fno-rtti -nostdinc++ -isystem../../buildtools/third_party/libc++/trunk/include -isystem../../buildtools/third_party/libc++abi/trunk/include -fvisibility-inlines-hidden -c ../../third_party/breakpad/breakpad/src/client/mac/crash_generation/ConfigFile.mm -o obj/third_party/breakpad/utilities/ConfigFile.o
../../third_party/breakpad/breakpad/src/client/mac/crash_generation/ConfigFile.mm:108:5: error: 'sprintf' is deprecated: This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead. [-Werror,-Wdeprecated-declarations]
    sprintf(processUptimeString, "%llu",
    ^
sdk/xcode_links/MacOSX13.0.sdk/usr/include/stdio.h:188:1: note: 'sprintf' has been explicitly marked deprecated here
__deprecated_msg("This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.")
^
sdk/xcode_links/MacOSX13.0.sdk/usr/include/sys/cdefs.h:214:48: note: expanded from macro '__deprecated_msg'
        #define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg)))
                                                      ^
../../third_party/breakpad/breakpad/src/client/mac/crash_generation/ConfigFile.mm:114:3: error: 'sprintf' is deprecated: This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead. [-Werror,-Wdeprecated-declarations]
  sprintf(processCrashtimeString, "%zd", tv.tv_sec);
  ^
sdk/xcode_links/MacOSX13.0.sdk/usr/include/stdio.h:188:1: note: 'sprintf' has been explicitly marked deprecated here
__deprecated_msg("This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.")
^
sdk/xcode_links/MacOSX13.0.sdk/usr/include/sys/cdefs.h:214:48: note: expanded from macro '__deprecated_msg'
        #define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg)))

Bug: webrtc:14342
Change-Id: I923ab3f9155eb36aa2edf9b1d38c123e3e6ad029
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3829529
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-08-12 17:14:46 +00:00
Zequan Wu a7a8b9c300 Fix int64_t format in fprintf by using PRIx64.
Change-Id: Ic03ecc055c4eb097fbaaf8c8cd2c0a68d5aea8a0
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3826785
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-08-11 22:03:01 +00:00
Nelson Billing c44d14ac89 Fix garbage header being prepended to native symbol uploads.
Change-Id: I96887504ad9dc47dda6ebc5be7c193a1eb1f94d1
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3825137
Reviewed-by: Zequan Wu <zequanwu@google.com>
2022-08-10 20:38:02 +00:00
Zequan Wu f1f7b5272f Check sh_type for symbol table and finish ProcessDIEs if any DIE processing goes wrong
- If symbol table section is malformed, skip them.
- SkipDIE and ProcessDIE return nullptr when processing goes wrong due to malformed debug info, stop processing in this case.

Bug: 1349354
Change-Id: Ia1d3e3591bbd2dad8b9eb351c1882cfc03bfad4b
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3821448
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-08-10 18:01:58 +00:00
Lorenzo Alberto Maria Ambrosi 7e4ea04094 Add error messages on pdb Open function
This implements the error messages from
https://docs.microsoft.com/en-us/visualstudio/debugger/debug-interface-access/idiadatasource-loaddataforexe?view=vs-2022
and
https://docs.microsoft.com/en-us/visualstudio/debugger/debug-interface-access/idiadatasource-loaddatafrompdb?view=vs-2022
instead of having just a generic error message.

Signed-off-by: Lorenzo Alberto Maria Ambrosi <lorenzothunder.ambrosi@gmail.com>
Bug: https://bugs.chromium.org/p/google-breakpad/issues/detail?id=866
Change-Id: I23c0e80d31afb402a70cb0cdded78d3d34ac5fff
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3810512
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-08-10 01:58:11 +00:00
Joshua Peraza defdcb714e arm64: strip PACs from return addresses found from CFI
Bug: b/239086293
Change-Id: I8b514e8640f0f2496cea8d0b516124c0e3a3b81a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3788698
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-07-27 02:23:04 +00:00
Leonard Grey 86ea554601 Mac dump_syms: Fix -a on arm64
- Resets `selected_object_file_` when a new file is read. This was a dangling pointer previously.
- When `-a` is provided, ensures that both parts of a split module use
the given architecture.

Bug: None
Change-Id: I581d41b0eee4ec2b0d598fb80b9065e7ebde0e0d
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3788222
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-07-26 18:28:38 +00:00
Joshua Peraza afc8daa2de arm64: don't interpret DW_CFA_GNU_window_save
DW_CFA_AARCH64_negate_ra_state uses the same encoding as
DW_CFA_GNU_window_save. It is meant to indicate that x30/LR
has been signed, but breakpad does not require this information.

Bug: b/239086293
Change-Id: I5a17bd5e0673a3ff80a8c6e347013d66054314e8
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3781136
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-07-22 00:24:44 +00:00
Alex Gough e467c59c68 Adds fastfail subcodes as distinct failure reasons
Previously these all resulted in EXCEPTION_STACK_BUFFER_OVERRUN
but this hides various specific fast fail crash types, which
are now provided based on the exception's subcode.

Tests: added to minidump_process_unittest.cc
Bug: 865632
Change-Id: Ic6693de247da55cf6d132d108c6e20c635f366b1
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3771437
Reviewed-by: Robert Sesek <rsesek@chromium.org>
2022-07-19 13:05:17 +00:00
George Burgess IV 335e61656f {static_,}range_map: fix overflows under ubsan
Explicitly call out where overflows are expected, and add appropriate
checking for them.

BUG=b:235999011
TEST=Unittests on CrOS and Linux

Change-Id: I999a6996183c2f4afc16a1c0188dee3bd64d7f09
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3759630
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-13 05:45:04 +00:00
George Burgess IV eb087c3383 exploitability_linux: fix mismatched comparison warning
On ARM, this write fails to build:
comparison of integers of different signs: 'ssize_t' (aka 'int') and
'const unsigned int' [-Werror,-Wsign-compare]

Since we check that it's <= 15 above, we can simply cast it without
issue.

Bug: b:235999011
Change-Id: Id75fc0df74e88b347df615df06567e96c6b59a1d
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3758800
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-12 21:25:31 +00:00
George Burgess IV e9057e2d5e stackwalker_mips64_unittest: default-init MIPS context
This test's constructor fails to fully initialize this raw context. As a
result, we have at least one use of uninitialized memory in CFI.At4004.
This causes said test to fail under ASAN.

Bug: b:235999011
Change-Id: I3279da8ac3414eb8c90f3949a1db47a03e750a94
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756749
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-12 15:34:54 +00:00
George Burgess IV 0b1ffaa153 module_unittest: fix memory leak
`AddFunction` only takes ownership of the pointer passed to it if it
returns true. Since it returns false when adding `function2`, we need to
free it.

Bug: b:235999011
Change-Id: I11984103c2c153ff0daf2c9690f9c88d04a2131b
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756732
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-11 23:17:41 +00:00
George Burgess IV 4b7984b351 stabs_to_module: fix memory leak
Everything in `functions_` is owned by the current `StabsToModule`. If
we fail to add something from `functions_`, we need to be sure to
dispose of it properly, since `module_` will not take ownership.

Bug: b:235999011
Change-Id: I3b965709ea2016a065b50588f4132d14a1de7725
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756733
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-11 23:17:39 +00:00
George Burgess IV 9a1941fab9 crashdump_uploader: fix memory leaks & use-after-frees
These `GoogleCrashdumpUploader` instances need to be cleaned up; place
them on the stack.

Doing this unmasks another bug in this code: the `MockLibcurlWrapper`
instance we're passing into these `GoogleCrashdumpUploader`s becomes
owned by the `GoogleCrashdumpUploader` in question. Putting them on the
stack makes `free()` unhappy when the `GoogleCrashdumpUploader` they're
given to gets destructed.

Bug: b:235999011
Change-Id: I5d0424a1c09d32ea34a8fa6f5e52d3695ee6e857
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756172
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-11 21:40:12 +00:00
George Burgess IV 4d7cd09800 exploitability: fix buffer overflow
exploitability_linux assumed a 15 byte buffer to always be passed in as
`raw_bytes` for `DisassembleBytes`. This test was passing in a 6 byte
buffer. Make `DisassembleBytes` accept a length.

Bug: b:235999011
Change-Id: I696c66357faa1c7d762c64009864123897f03488
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756170
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-11 20:20:05 +00:00
George Burgess IV c161459d7e dwarf2reader: include <algorithm>
On CrOS, a breakpad update is breaking:
```
google-breakpad-2022.07.03.054510-r210:       no member named 'sort' in
namespace 'std'
google-breakpad-2022.07.03.054510-r210:   std::sort(abbrevs_->begin(),
abbrevs_->end(),
google-breakpad-2022.07.03.054510-r210:   ~~~~~^
```

Looks like we're missing the include for `sort`.

Bug: 235999011
Change-Id: I917389c12b370357fd1fc7cb08af0b9d7f315c84
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3741510
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-03 17:19:35 +00:00
George Burgess IV 90a0d9a9ff configure: support rustc-demangle installations in the sysroot
Currently, `./configure` supports
`--with-rustc-demangle=${path_to_crate_root}` as the only mechanism to
enable rustc-demangle support. This CL adds support for cases where
keeping or synthesizing a full `cargo` build tree is hacky in comparison
to simply installing `rustc_demangle.h` in e.g., /usr/include, and
putting `librustc_demangle.a` in e.g., `/usr/lib64`.

Bug: b:235999011
Change-Id: Id5fe2a24c4b6e33c4df0e10c86ba99c7cf890ab2
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3733672
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-07-03 05:45:10 +00:00
Konstantin Mandrika 3e2a341168 Handle abbrev entities being out of order.
There are cases where the debug_abbrev entities are not sequential,
for example, in Xamarin system dlls. This change gracefully handles
such a case.

Change-Id: Ib270393d3cf9fd18efd99d15d0fba4f96748188a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3738879
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-07-01 00:08:18 +00:00
Mike Frysinger f9fcba812c simplify enable & with configure flags
Leverage the existing default logic & argument parsing that turn the
values yes/no into true/false to simplify the code so we don't create
duplicate variables.  This kills a lot of boilerplate.

Change-Id: Ib7c8e00f7b23e67ed05f3b35e523c235aed41129
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3734169
Reviewed-by: George Burgess <gbiv@chromium.org>
2022-06-30 06:44:21 +00:00
Mike Frysinger 593196225d regen autotools
Previous updates to these were partially done.  Rerun with the
right versions of autoconf-2.69 & automake-1.16.5.

Change-Id: Ifd6c8405b0b50c5d3cf4ea536a7db5762d62644e
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3734167
Reviewed-by: George Burgess <gbiv@chromium.org>
2022-06-30 06:44:14 +00:00