blob: 15206d8b594b29f18dc0ab163ecf58e280ea039a [file] [log] [blame]
Jorge Lucangeli Obesad43cc62012-04-11 16:25:43 -07001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "shill/minijail.h"
6
7using std::vector;
8
9namespace shill {
10
11static base::LazyInstance<Minijail> g_minijail = LAZY_INSTANCE_INITIALIZER;
12
13Minijail::Minijail() {}
14
15Minijail::~Minijail() {}
16
17// static
18Minijail *Minijail::GetInstance() {
19 return g_minijail.Pointer();
20}
21
22struct minijail *Minijail::New() {
23 return minijail_new();
24}
25
26void Minijail::Destroy(struct minijail *jail) {
27 minijail_destroy(jail);
28}
29
30bool Minijail::DropRoot(struct minijail *jail, const char *user) {
31 // |user| is copied so the only reason either of these calls can fail
32 // is ENOMEM.
33 return !minijail_change_user(jail, user) &&
34 !minijail_change_group(jail, user);
35}
36
37void Minijail::UseCapabilities(struct minijail *jail, uint64_t capmask) {
38 minijail_use_caps(jail, capmask);
39}
40
41bool Minijail::Run(struct minijail *jail,
42 vector<char *> args, pid_t *pid) {
43 return minijail_run_pid(jail, args[0], args.data(), pid) == 0;
44}
45
Jorge Lucangeli Obes8c1706f2012-08-30 15:30:48 -070046bool Minijail::RunPipe(struct minijail *jail,
47 vector<char *> args, pid_t *pid, int *stdin) {
48 return minijail_run_pid_pipe(jail, args[0], args.data(), pid, stdin) == 0;
49}
50
Jorge Lucangeli Obesad43cc62012-04-11 16:25:43 -070051bool Minijail::RunAndDestroy(struct minijail *jail,
52 vector<char *> args, pid_t *pid) {
53 bool res = Run(jail, args, pid);
54 Destroy(jail);
55 return res;
56}
57
Jorge Lucangeli Obes8c1706f2012-08-30 15:30:48 -070058bool Minijail::RunPipeAndDestroy(struct minijail *jail,
59 vector<char *> args, pid_t *pid, int *stdin) {
60 bool res = RunPipe(jail, args, pid, stdin);
61 Destroy(jail);
62 return res;
63}
64
Jorge Lucangeli Obesad43cc62012-04-11 16:25:43 -070065} // namespace shill