linux: add wrappers for send/recvmsg

sendmsg() and recvmsg() are complicated to use. Refactor their usage
into functions with a simpler, tested interface and use those instead.
This also adds CreateCredentialSocketpair() to create a pair of
connected sockets with SO_PASSCRED set. This option should be set
before the possibility of any calls to sendmsg() with the socket pair
to avoid race conditions in properly setting credentials.

Also update the handler to use Strategy::kNoPtrace (which causes the
crash dump to fail without breaking the socket connection) if the
credentials were invalid, which can happen if SO_PASSCRED was set after
the call to sendmsg() or if the sending process does not exist in this
namespace.

Change-Id: Id09f87125540255687a3c35d5bed7fa01ec07cff
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/1584639
Reviewed-by: Mark Mentovai <mark@chromium.org>
10 files changed
tree: 3894d0450089f5980370aa47cec4ace45317d0f4
  1. .clang-format
  2. .gitignore
  3. .gn
  4. .vpython
  5. AUTHORS
  6. BUILD.gn
  7. CONTRIBUTORS
  8. DEPS
  9. LICENSE
  10. README.md
  11. build/
  12. client/
  13. codereview.settings
  14. compat/
  15. crashpad.gyp
  16. doc/
  17. handler/
  18. infra/
  19. minidump/
  20. navbar.md
  21. package.h
  22. snapshot/
  23. test/
  24. third_party/
  25. tools/
  26. util/
README.md

Crashpad

Crashpad is a crash-reporting system.

Documentation

Source Code

Crashpad’s source code is hosted in a Git repository at https://chromium.googlesource.com/crashpad/crashpad.

Other Links