private SandboxedProcessUnix CreateAndStartSandboxedProcess(SandboxedProcessInfo info, bool?measureTime = null) { var process = new SandboxedProcessUnix(info, overrideMeasureTime: measureTime); process.Start(); return(process); }
private SandboxedProcessUnix CreateAndStartSandboxedProcess(SandboxedProcessInfo info) { var process = new SandboxedProcessUnix(info); process.Start(); return(process); }
private static Sandbox.AccessReport PostAccessReport(SandboxedProcessUnix proc, FileOperation operation, Sandbox.AccessReportStatistics stats, int pid = 1234, string path = "/dummy/path", bool allowed = true) { var report = new Sandbox.AccessReport { Operation = operation, Statistics = stats, Pid = pid, PathOrPipStats = Sandbox.AccessReport.EncodePath(path), Status = allowed ? (uint)FileAccessStatus.Allowed : (uint)FileAccessStatus.Denied }; proc.PostAccessReport(report); return(report); }
private Task GetContinuouslyPostAccessReportsTask(SandboxedProcessUnix process, List <ReportInstruction> instructions) { XAssert.IsNotNull(process); XAssert.IsNotNull(instructions); return(Task.Run(async() => { foreach (var instr in instructions) { PostAccessReport(instr.Process, instr.Operation, instr.Stats, instr.Pid, instr.Path, instr.Allowed); // Advance the minimum enqueue time s_connection.MinReportQueueEnqueueTime = instr.Stats.EnqueueTime; // wait a bit before sending the next one await Task.Delay(100); } })); }
public bool NotifyPipFinished(long pipId, SandboxedProcessUnix process) { return(true); }
public void NotifyRootProcessExited(long pipId, SandboxedProcessUnix process) { }
public bool NotifyPipStarted(LoggingContext loggingContext, FileAccessManifest fam, SandboxedProcessUnix process) { return(true); }
private void ContinuouslyPostAccessReports(SandboxedProcessUnix process, List <ReportInstruction> instructions) { Analysis.IgnoreResult(GetContinuouslyPostAccessReportsTask(process, instructions), "fire and forget"); }