| // Copyright 2017 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef AUTHPOLICY_JAIL_HELPER_H_ |
| #define AUTHPOLICY_JAIL_HELPER_H_ |
| |
| #include <base/macros.h> |
| |
| #include "authpolicy/authpolicy_metrics.h" |
| #include "authpolicy/path_service.h" |
| |
| namespace authpolicy { |
| |
| namespace protos { |
| class DebugFlags; |
| } |
| |
| class Anonymizer; |
| class ProcessExecutor; |
| |
| // Helper class for setting up a minijail and running a process. |
| class JailHelper { |
| public: |
| JailHelper(const PathService* path_service, |
| const protos::DebugFlags* flags, |
| Anonymizer* anonymizer); |
| |
| // Sets up minijail and executes |cmd|. |seccomp_path_key| specifies the path |
| // of the seccomp filter to use. |timer_type| is the UMA timer metric to |
| // report. Passing |TIMER_NONE| won't report anything. Returns true if the |
| // process ran successfully. |
| bool SetupJailAndRun(ProcessExecutor* cmd, |
| Path seccomp_path_key, |
| TimerType timer_type) const; |
| |
| private: |
| const PathService* paths_ = nullptr; // File paths, not owned. |
| const protos::DebugFlags* flags_ = nullptr; // Debug flags, not owned. |
| Anonymizer* anonymizer_ = nullptr; // Log anonymizer, not owned. |
| |
| DISALLOW_COPY_AND_ASSIGN(JailHelper); |
| }; |
| |
| } // namespace authpolicy |
| |
| #endif // AUTHPOLICY_JAIL_HELPER_H_ |