linux: Patch for capget syscall error

Bug: crashpad:332
Change-Id: If867fd1780e4be1567048ad7fab29f5e61560aff
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2120780
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
This commit is contained in:
Sukumar Mokkarala 2020-04-02 11:54:32 +05:30 committed by Commit Bot
parent 194e23910c
commit 9da2573ca9

View File

@ -93,23 +93,20 @@ PtraceScope GetPtraceScope() {
}
bool HaveCapSysPtrace() {
struct __user_cap_header_struct cap_header = {};
struct __user_cap_data_struct cap_data = {};
__user_cap_header_struct cap_header;
cap_header.pid = getpid();
cap_header.version = _LINUX_CAPABILITY_VERSION_3;
__user_cap_data_struct cap_data[_LINUX_CAPABILITY_U32S_3];
if (syscall(SYS_capget, &cap_header, &cap_data) != 0) {
PLOG(ERROR) << "capget";
return false;
}
if (cap_header.version != _LINUX_CAPABILITY_VERSION_3) {
LOG(ERROR) << "Unexpected capability version " << std::hex
LOG_IF(ERROR, errno == EINVAL) << "cap_header.version " << std::hex
<< cap_header.version;
return false;
}
return (cap_data.effective & (1 << CAP_SYS_PTRACE)) != 0;
return (cap_data[CAP_TO_INDEX(CAP_SYS_PTRACE)].effective &
CAP_TO_MASK(CAP_SYS_PTRACE)) != 0;
}
bool SendMessageToClient(