From 5ef1fe996b8c641c3bd59527b25fe57f78c12ea1 Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Tue, 17 Mar 2020 01:23:49 -0700 Subject: [PATCH] Add path to request trace (#61) --- SecretAgentKit/SecretAgentKit.h | 3 +++ SecretAgentKit/SigningRequestTracer.swift | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) 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) } }