aboutsummaryrefslogtreecommitdiff
path: root/www/chromium/files/patch-base_debug_debugger__posix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'www/chromium/files/patch-base_debug_debugger__posix.cc')
-rw-r--r--www/chromium/files/patch-base_debug_debugger__posix.cc62
1 files changed, 37 insertions, 25 deletions
diff --git a/www/chromium/files/patch-base_debug_debugger__posix.cc b/www/chromium/files/patch-base_debug_debugger__posix.cc
index 024e9e915cda..63a56d85b575 100644
--- a/www/chromium/files/patch-base_debug_debugger__posix.cc
+++ b/www/chromium/files/patch-base_debug_debugger__posix.cc
@@ -1,33 +1,45 @@
---- base/debug/debugger_posix.cc.orig 2021-12-14 11:44:55 UTC
+--- base/debug/debugger_posix.cc.orig 2022-02-07 13:39:41 UTC
+++ base/debug/debugger_posix.cc
-@@ -87,7 +87,7 @@ bool BeingDebugged() {
- KERN_PROC,
- KERN_PROC_PID,
- getpid()
--#if defined(OS_OPENBSD)
-+#if defined(OS_BSD)
- , sizeof(struct kinfo_proc),
- 0
+@@ -36,6 +36,10 @@
+ #include <sys/sysctl.h>
#endif
-@@ -95,33 +95,35 @@ bool BeingDebugged() {
+
++#if defined(OS_OPENBSD)
++#include <sys/proc.h>
++#endif
++
+ #if defined(OS_FREEBSD)
+ #include <sys/user.h>
+ #endif
+@@ -95,32 +99,51 @@ bool BeingDebugged() {
// Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE. The source and
// binary interfaces may change.
-- struct kinfo_proc info;
-- size_t info_size = sizeof(info);
++#if defined(OS_OPENBSD)
+ struct kinfo_proc *info;
+ size_t info_size;
++#else
+ struct kinfo_proc info;
+ size_t info_size = sizeof(info);
++#endif
--#if defined(OS_OPENBSD)
+ #if defined(OS_OPENBSD)
if (sysctl(mib, base::size(mib), NULL, &info_size, NULL, 0) < 0)
return -1;
-+ info = (struct kinfo_proc *)malloc(info_size);
mib[5] = (info_size / sizeof(struct kinfo_proc));
--#endif
-
-- int sysctl_result = sysctl(mib, base::size(mib), &info, &info_size, NULL, 0);
++ if ((info = reinterpret_cast<kinfo_proc*>(malloc(info_size))) == NULL) {
++ is_set = true;
++ being_debugged = false;
++ return being_debugged;
++ }
++
+ int sysctl_result = sysctl(mib, base::size(mib), info, &info_size, NULL, 0);
+ #endif
+
++#if !defined(OS_OPENBSD)
+ int sysctl_result = sysctl(mib, base::size(mib), &info, &info_size, NULL, 0);
++#endif
DCHECK_EQ(sysctl_result, 0);
if (sysctl_result != 0) {
is_set = true;
@@ -39,18 +51,18 @@
// This process is being debugged if the P_TRACED flag is set.
is_set = true;
#if defined(OS_FREEBSD)
-- being_debugged = (info.ki_flag & P_TRACED) != 0;
-+ being_debugged = (info->ki_flag & P_TRACED) != 0;
- #elif defined(OS_BSD)
+ being_debugged = (info.ki_flag & P_TRACED) != 0;
+-#elif defined(OS_BSD)
- being_debugged = (info.p_flag & P_TRACED) != 0;
-+ being_debugged = (info->p_flag & P_TRACED) != 0;
++#elif defined(OS_OPENBSD)
++ being_debugged = (info->p_psflags & PS_TRACED) != 0;
#else
-- being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
-+ being_debugged = (info->kp_proc.p_flag & P_TRACED) != 0;
- #endif
+ being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
++#endif
+
+out:
++#if defined(OS_OPENBSD)
+ free(info);
+ #endif
return being_debugged;
}
-