Skip to content
  • Tobias Berner's avatar
    Disallow ptrace on greeter and kwin_wayland process on FreeBSD [... for the future] · 2ea5feb3
    Tobias Berner authored
    Summary:
    Similar to[[ https://phabricator.kde.org/D1216 |  D1216 ]] add procctl call to disable ptrace on FreeBSD.
    
    We cannot do the procfs-lookup to check whether the process is already being run inside gdb -- however, on FreeBSD, we could use the P_TRACED flag of the process to figure this out:
    > sys/proc.h:#define P_TRACED        0x00800 /* Debugged process being traced. */
    
    And the code would look something similar to
    
    ```
        pid_t pid = getpid();
        struct procstat *prstat = procstat_open_sysctl();
        struct kinfo_proc *procinfo;
        unsigned int cnt;
        procinfo = procstat_getprocs(prstat, KERN_PROC_PID, pid, &cnt);
        long p_flags = procinfo->ki_flag;
        int p_traced = p_flags & P_TRACED;
        if (p_traced != P_TRACED) {
            mode = PROC_TRACE_CTL_DISABLE;
            procctl(P_PID, getpid(), PROC_TRACE_CTL, &mode);
        }
        procstat_freeprocs(prstat,procinfo);
        procstat_close(prstat);
    ```
    
    But as wayland is [far] in the future on FreeBSD, and that check above is a bit lengthy, I think it is enough if we add it once it is needed.
    
    Reviewers: rakuco, graesslin
    
    Reviewed By: graesslin
    
    Subscribers: plasma-devel
    
    Projects: #plasma
    
    Differential Revision: https://phabricator.kde.org/D1425
    2ea5feb3