示例#1
0
        /// <nodoc />
        public SandboxConfiguration(ISandboxConfiguration template, PathRemapper pathRemapper)
        {
            Contract.Assume(template != null);
            m_unsafeSandboxConfig = new UnsafeSandboxConfiguration(template.UnsafeSandboxConfiguration);

            DebugInstantPipOutputs       = template.DebugInstantPipOutputs;
            BreakOnUnexpectedFileAccess  = template.BreakOnUnexpectedFileAccess;
            FileAccessIgnoreCodeCoverage = template.FileAccessIgnoreCodeCoverage;
            FailUnexpectedFileAccesses   = template.FailUnexpectedFileAccesses;
            DefaultTimeout                     = template.DefaultTimeout;
            DefaultWarningTimeout              = template.DefaultWarningTimeout;
            TimeoutMultiplier                  = template.TimeoutMultiplier;
            WarningTimeoutMultiplier           = template.WarningTimeoutMultiplier;
            TimeoutDumpDirectory               = pathRemapper.Remap(template.TimeoutDumpDirectory);
            LogObservedFileAccesses            = template.LogObservedFileAccesses;
            LogProcesses                       = template.LogProcesses;
            LogProcessData                     = template.LogProcessData;
            LogFileAccessTables                = template.LogFileAccessTables;
            OutputReportingMode                = template.OutputReportingMode;
            FileSystemMode                     = template.FileSystemMode;
            ForceReadOnlyForRequestedReadWrite = template.ForceReadOnlyForRequestedReadWrite;
            FlushPageCacheToFileSystemOnStoringOutputsToCache = template.FlushPageCacheToFileSystemOnStoringOutputsToCache;
            NormalizeReadTimestamps                   = template.NormalizeReadTimestamps;
            UseLargeNtClosePreallocatedList           = template.UseLargeNtClosePreallocatedList;
            UseExtraThreadToDrainNtClose              = template.UseExtraThreadToDrainNtClose;
            MaskUntrackedAccesses                     = template.MaskUntrackedAccesses;
            LogProcessDetouringStatus                 = template.LogProcessDetouringStatus;
            HardExitOnErrorInDetours                  = template.HardExitOnErrorInDetours;
            CheckDetoursMessageCount                  = template.CheckDetoursMessageCount;
            AllowInternalDetoursErrorNotificationFile = template.AllowInternalDetoursErrorNotificationFile;
            CrashOnCBSSOOMError = template.CrashOnCBSSOOMError;
            EnforceAccessPoliciesOnDirectoryCreation = template.EnforceAccessPoliciesOnDirectoryCreation;
            NumberOfKextConnections = template.NumberOfKextConnections;
            ReportQueueSizeMb       = template.ReportQueueSizeMb;
        }
示例#2
0
        /// <summary>
        /// Creates a context. All <see cref="Counters"/> are initially zero and will increase as accesses are reported.
        /// </summary>
        public FileAccessReportingContext(LoggingContext loggingContext, PipExecutionContext context, ISandboxConfiguration config, Process pip, bool reportWhitelistedAccesses, FileAccessWhitelist whitelist = null)
        {
            Contract.Requires(loggingContext != null);
            Contract.Requires(context != null);
            Contract.Requires(config != null);
            Contract.Requires(pip != null);

            m_loggingContext            = loggingContext;
            m_context                   = context;
            m_config                    = config;
            m_pip                       = pip;
            m_reportWhitelistedAccesses = reportWhitelistedAccesses;
            m_fileAccessWhitelist       = whitelist;
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 public LocalWorkerWithRemoting(
     IScheduleConfiguration scheduleConfig,
     ISandboxConfiguration sandboxConfig,
     IPipQueue pipQueue,
     IDetoursEventListener detoursListener,
     PipExecutionContext pipExecutionContext)
     : base(scheduleConfig, pipQueue, detoursListener, pipExecutionContext)
 {
     m_localExecutionSemaphore = new SemaphoreSlim(scheduleConfig.MaxProcesses, scheduleConfig.MaxProcesses);
     m_remotingThreshold       = (int)(scheduleConfig.MaxProcesses * scheduleConfig.RemotingThresholdMultiplier);
     m_processCanRunRemoteTags = scheduleConfig.ProcessCanRunRemoteTags.Select(t => StringTable.AddString(t)).ToHashSet();
     m_processMustRunLocalTags = scheduleConfig.ProcessMustRunLocalTags.Select(t => StringTable.AddString(t)).ToHashSet();
     m_sandboxConfig           = sandboxConfig;
 }
示例#4
0
        /// <nodoc />
        public SandboxConfiguration(ISandboxConfiguration template, PathRemapper pathRemapper)
        {
            Contract.Assume(template != null);
            m_unsafeSandboxConfig = new UnsafeSandboxConfiguration(template.UnsafeSandboxConfiguration);

            BreakOnUnexpectedFileAccess  = template.BreakOnUnexpectedFileAccess;
            FileAccessIgnoreCodeCoverage = template.FileAccessIgnoreCodeCoverage;
            FailUnexpectedFileAccesses   = template.FailUnexpectedFileAccesses;
            DefaultTimeout           = template.DefaultTimeout;
            DefaultWarningTimeout    = template.DefaultWarningTimeout;
            TimeoutMultiplier        = template.TimeoutMultiplier;
            WarningTimeoutMultiplier = template.WarningTimeoutMultiplier;
            TimeoutDumpDirectory     = pathRemapper.Remap(template.TimeoutDumpDirectory);
            SurvivingPipProcessChildrenDumpDirectory = pathRemapper.Remap(template.SurvivingPipProcessChildrenDumpDirectory);
            LogObservedFileAccesses            = template.LogObservedFileAccesses;
            LogProcesses                       = template.LogProcesses;
            LogProcessData                     = template.LogProcessData;
            LogFileAccessTables                = template.LogFileAccessTables;
            OutputReportingMode                = template.OutputReportingMode;
            FileSystemMode                     = template.FileSystemMode;
            ForceReadOnlyForRequestedReadWrite = template.ForceReadOnlyForRequestedReadWrite;
            FlushPageCacheToFileSystemOnStoringOutputsToCache = template.FlushPageCacheToFileSystemOnStoringOutputsToCache;
            NormalizeReadTimestamps                          = template.NormalizeReadTimestamps;
            UseLargeNtClosePreallocatedList                  = template.UseLargeNtClosePreallocatedList;
            UseExtraThreadToDrainNtClose                     = template.UseExtraThreadToDrainNtClose;
            MaskUntrackedAccesses                            = template.MaskUntrackedAccesses;
            LogProcessDetouringStatus                        = template.LogProcessDetouringStatus;
            HardExitOnErrorInDetours                         = template.HardExitOnErrorInDetours;
            CheckDetoursMessageCount                         = template.CheckDetoursMessageCount;
            AllowInternalDetoursErrorNotificationFile        = template.AllowInternalDetoursErrorNotificationFile;
            EnforceAccessPoliciesOnDirectoryCreation         = template.EnforceAccessPoliciesOnDirectoryCreation;
            MeasureProcessCpuTimes                           = template.MeasureProcessCpuTimes;
            KextReportQueueSizeMb                            = template.KextReportQueueSizeMb;
            KextEnableReportBatching                         = template.KextEnableReportBatching;
            KextThrottleCpuUsageBlockThresholdPercent        = template.KextThrottleCpuUsageBlockThresholdPercent;
            KextThrottleCpuUsageWakeupThresholdPercent       = template.KextThrottleCpuUsageWakeupThresholdPercent;
            KextThrottleMinAvailableRamMB                    = template.KextThrottleMinAvailableRamMB;
            ContainerConfiguration                           = new SandboxContainerConfiguration(template.ContainerConfiguration);
            AdminRequiredProcessExecutionMode                = template.AdminRequiredProcessExecutionMode;
            RedirectedTempFolderRootForVmExecution           = pathRemapper.Remap(template.RedirectedTempFolderRootForVmExecution);
            RetryOnAzureWatsonExitCode                       = template.RetryOnAzureWatsonExitCode;
            EnsureTempDirectoriesExistenceBeforePipExecution = template.EnsureTempDirectoriesExistenceBeforePipExecution;
            GlobalUnsafeUntrackedScopes                      = pathRemapper.Remap(template.GlobalUnsafeUntrackedScopes);
            PreserveOutputsForIncrementalTool                = template.PreserveOutputsForIncrementalTool;
            GlobalUnsafePassthroughEnvironmentVariables      = new List <string>(template.GlobalUnsafePassthroughEnvironmentVariables);
            VmConcurrencyLimit = template.VmConcurrencyLimit;
            DirectoriesToEnableFullReparsePointParsing = pathRemapper.Remap(template.DirectoriesToEnableFullReparsePointParsing);
            ExplicitlyReportDirectoryProbes            = template.ExplicitlyReportDirectoryProbes;
        }
示例#5
0
        /// <nodoc />
        public SandboxConfiguration(ISandboxConfiguration template, PathRemapper pathRemapper)
        {
            Contract.Assume(template != null);
            m_unsafeSandboxConfig = new UnsafeSandboxConfiguration(template.UnsafeSandboxConfiguration);

            DebugInstantPipOutputs       = template.DebugInstantPipOutputs;
            BreakOnUnexpectedFileAccess  = template.BreakOnUnexpectedFileAccess;
            FileAccessIgnoreCodeCoverage = template.FileAccessIgnoreCodeCoverage;
            FailUnexpectedFileAccesses   = template.FailUnexpectedFileAccesses;
            DefaultTimeout                     = template.DefaultTimeout;
            DefaultWarningTimeout              = template.DefaultWarningTimeout;
            TimeoutMultiplier                  = template.TimeoutMultiplier;
            WarningTimeoutMultiplier           = template.WarningTimeoutMultiplier;
            TimeoutDumpDirectory               = pathRemapper.Remap(template.TimeoutDumpDirectory);
            LogObservedFileAccesses            = template.LogObservedFileAccesses;
            LogProcesses                       = template.LogProcesses;
            LogProcessData                     = template.LogProcessData;
            LogFileAccessTables                = template.LogFileAccessTables;
            OutputReportingMode                = template.OutputReportingMode;
            FileSystemMode                     = template.FileSystemMode;
            ForceReadOnlyForRequestedReadWrite = template.ForceReadOnlyForRequestedReadWrite;
            FlushPageCacheToFileSystemOnStoringOutputsToCache = template.FlushPageCacheToFileSystemOnStoringOutputsToCache;
            NormalizeReadTimestamps                    = template.NormalizeReadTimestamps;
            UseLargeNtClosePreallocatedList            = template.UseLargeNtClosePreallocatedList;
            UseExtraThreadToDrainNtClose               = template.UseExtraThreadToDrainNtClose;
            MaskUntrackedAccesses                      = template.MaskUntrackedAccesses;
            LogProcessDetouringStatus                  = template.LogProcessDetouringStatus;
            HardExitOnErrorInDetours                   = template.HardExitOnErrorInDetours;
            CheckDetoursMessageCount                   = template.CheckDetoursMessageCount;
            AllowInternalDetoursErrorNotificationFile  = template.AllowInternalDetoursErrorNotificationFile;
            EnforceAccessPoliciesOnDirectoryCreation   = template.EnforceAccessPoliciesOnDirectoryCreation;
            KextMeasureProcessCpuTimes                 = template.KextMeasureProcessCpuTimes;
            KextReportQueueSizeMb                      = template.KextReportQueueSizeMb;
            KextEnableReportBatching                   = template.KextEnableReportBatching;
            KextThrottleCpuUsageBlockThresholdPercent  = template.KextThrottleCpuUsageBlockThresholdPercent;
            KextThrottleCpuUsageWakeupThresholdPercent = template.KextThrottleCpuUsageWakeupThresholdPercent;
            KextThrottleMinAvailableRamMB              = template.KextThrottleMinAvailableRamMB;
            ContainerConfiguration                     = new SandboxContainerConfiguration(template.ContainerConfiguration);
            AdminRequiredProcessExecutionMode          = template.AdminRequiredProcessExecutionMode;
        }
示例#6
0
 protected DatabaseSandboxHandler(ISandboxConfiguration configuration)
 {
     _configuration = configuration;
 }