diff --git a/SecretAgentKit/SecretAgentKit.h b/SecretAgentKit/SecretAgentKit.h index f4a2de8..5d36bb0 100644 --- a/SecretAgentKit/SecretAgentKit.h +++ b/SecretAgentKit/SecretAgentKit.h @@ -8,6 +8,9 @@ #import +// Forward declaration of proc_pidpath from libproc.h +int proc_pidpath(int pid, void * buffer, uint32_t buffersize); + //! Project version number for SecretAgentKit. FOUNDATION_EXPORT double SecretAgentKitVersionNumber; diff --git a/SecretAgentKit/SigningRequestTracer.swift b/SecretAgentKit/SigningRequestTracer.swift index eeca1a5..b2c4cae 100644 --- a/SecretAgentKit/SigningRequestTracer.swift +++ b/SecretAgentKit/SigningRequestTracer.swift @@ -29,7 +29,10 @@ struct SigningRequestTracer { var pidAndNameInfo = self.pidAndNameInfo(from: pid) let ppid = pidAndNameInfo.kp_eproc.e_ppid != 0 ? pidAndNameInfo.kp_eproc.e_ppid : nil let procName = String(cString: &pidAndNameInfo.kp_proc.p_comm.0) - return SigningRequestProvenance.Process(pid: pid, name: procName, path: "", parentPID: ppid) + let pathPointer = UnsafeMutablePointer.allocate(capacity: Int(MAXPATHLEN)) + _ = proc_pidpath(pid, pathPointer, UInt32(MAXPATHLEN)) + let path = String(cString: pathPointer) + return SigningRequestProvenance.Process(pid: pid, name: procName, path: path, parentPID: ppid) } }