llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: David CARLIER (devnexen) <details> <summary>Changes</summary> before having the generic EINVAL message, we check if the `security.bsd.unprivileged_proc_debug` allows process debugging. close #<!-- -->79634 --- Full diff: https://github.com/llvm/llvm-project/pull/79662.diff 1 Files Affected: - (modified) lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp (+28-1) ``````````diff diff --git a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp index 19e0986ace31ff6..7540ba296517821 100644 --- a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp +++ b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp @@ -48,14 +48,37 @@ static Status EnsureFDFlags(int fd, int flags) { return error; } +static Status CanTrace() { + Status status; + int proc_debug, ret; + size_t len = sizeof(proc_debug); + ret = ::sysctlbyname("security.bsd.unprivileged_proc_debug", &proc_debug, &len, nullptr, 0); + if (ret != 0) { + return Status("sysctlbyname() security.bsd.unprivileged_proc_debug failed"); + } + + if (proc_debug < 1) { + return Status("process debug disabled by security.bsd.unprivileged_proc_debug oid"); + } + + return status; +} + // Public Static Methods llvm::Expected<std::unique_ptr<NativeProcessProtocol>> NativeProcessFreeBSD::Manager::Launch(ProcessLaunchInfo &launch_info, NativeDelegate &native_delegate) { Log *log = GetLog(POSIXLog::Process); - Status status; + + status = CanTrace(); + + if (status.Fail()) { + LLDB_LOG(log, "failed to launch process: {0}", status); + return status.ToError(); + } + ::pid_t pid = ProcessLauncherPosixFork() .LaunchProcess(launch_info, status) .GetProcessId(); @@ -388,6 +411,10 @@ Status NativeProcessFreeBSD::PtraceWrapper(int req, lldb::pid_t pid, void *addr, Status error; int ret; + error = CanTrace(); + if (error.Fail()) + return error; + errno = 0; ret = ptrace(req, static_cast<::pid_t>(pid), static_cast<caddr_t>(addr), data); `````````` </details> https://github.com/llvm/llvm-project/pull/79662 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits