• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* libminijail-private.h
2  * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  *
6  * Values shared between libminijailpreload and libminijail, but not visible to
7  * the outside world.
8  */
9 
10 #ifndef LIBMINIJAIL_PRIVATE_H
11 #define LIBMINIJAIL_PRIVATE_H
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 /* Explicitly declare exported functions so that -fvisibility tricks
18  * can be used for testing and minimal symbol leakage occurs.
19  */
20 #define API __attribute__((__visibility__("default")))
21 
22 static const char *kFdEnvVar = "__MINIJAIL_FD";
23 static const char *kLdPreloadEnvVar = "LD_PRELOAD";
24 
25 struct minijail;
26 
27 /* minijail_size: returns the size (in bytes) of @j if marshalled
28  * @j jail to compute size of
29  *
30  * Returns 0 on error.
31  */
32 extern size_t minijail_size(const struct minijail *j);
33 
34 /* minijail_marshal: serializes @j to @buf
35  * @j    minijail to serialize
36  * @buf  buffer to serialize to
37  * @size size of @buf
38  *
39  * Returns 0 on success.
40  *
41  * Writes |j| to |buf| such that it can be reparsed by the same
42  * library on the same architecture.  This is meant to be used
43  * by minijail0.c and libminijailpreload.c.  minijail flags that
44  * require minijail_run() will be excluded.
45  *
46  * The marshalled data is not robust to differences between the child
47  * and parent process (personality, etc).
48  */
49 extern int minijail_marshal(const struct minijail *j,
50                             char *buf,
51                             size_t size);
52 
53 /* minijail_unmarshal: initializes @j from @serialized
54  * @j          minijail to initialize
55  * @serialized serialized jail buffer
56  * @length     length of buffer
57  *
58  * Returns 0 on success.
59  */
60 extern int minijail_unmarshal(struct minijail *j,
61                               char *serialized,
62                               size_t length);
63 
64 /* minijail_from_fd: builds @j from @fd
65  * @j  minijail to initialize
66  * @fd fd to initialize from
67  *
68  * Returns 0 on success.
69  */
70 extern int minijail_from_fd(int fd, struct minijail *j);
71 
72 /* minijail_to_fd: sends @j over @fd
73  * @j  minijail to send
74  * @fd fd to send over
75  *
76  * Returns 0 on success, or a negative error code on error.
77  */
78 extern int minijail_to_fd(struct minijail *j, int fd);
79 
80 /* minijail_preexec: strips @j of all options handled by minijail_enter()
81  * @j jail to strip
82  */
83 extern void minijail_preexec(struct minijail *j);
84 
85 /* minijail_preenter: strips @j of all options handled by minijail_run()
86  * @j jail to strip
87  */
88 extern void minijail_preenter(struct minijail *j);
89 
90 #ifdef __cplusplus
91 }; /* extern "C" */
92 #endif
93 
94 #endif /* !LIBMINIJAIL_PRIVATE_H */
95