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 /* Explicitly declare exported functions so that -fvisibility tricks
14  * can be used for testing and minimal symbol leakage occurs.
15  */
16 #define API __attribute__ ((visibility("default")))
17 
18 static const char *kFdEnvVar = "__MINIJAIL_FD";
19 static const char *kLdPreloadEnvVar = "LD_PRELOAD";
20 
21 struct minijail;
22 
23 /* minijail_size: returns the size (in bytes) of @j if marshalled
24  * @j jail to compute size of
25  *
26  * Returns 0 on error.
27  */
28 extern size_t minijail_size(const struct minijail *j);
29 
30 /* minijail_marshal: serializes @j to @buf
31  * @j    minijail to serialize
32  * @buf  buffer to serialize to
33  * @size size of @buf
34  *
35  * Returns 0 on success.
36  *
37  * Writes |j| to |buf| such that it can be reparsed by the same
38  * library on the same architecture.  This is meant to be used
39  * by minijail0.c and libminijailpreload.c.  minijail flags that
40  * require minijail_run() will be excluded.
41  *
42  * The marshalled data is not robust to differences between the child
43  * and parent process (personality, etc).
44  */
45 extern int minijail_marshal(const struct minijail *j,
46                             char *buf,
47                             size_t size);
48 
49 /* minijail_unmarshal: initializes @j from @serialized
50  * @j          minijail to initialize
51  * @serialized serialized jail buffer
52  * @length     length of buffer
53  *
54  * Returns 0 on success.
55  */
56 extern int minijail_unmarshal(struct minijail *j,
57                               char *serialized,
58                               size_t length);
59 
60 /* minijail_from_fd: builds @j from @fd
61  * @j  minijail to initialize
62  * @fd fd to initialize from
63  *
64  * Returns 0 on success.
65  */
66 extern int minijail_from_fd(int fd, struct minijail *j);
67 
68 /* minijail_to_fd: sends @j over @fd
69  * @j  minijail to send
70  * @fd fd to send over
71  *
72  * Returns 0 on success.
73  */
74 extern int minijail_to_fd(struct minijail *j, int fd);
75 
76 /* minijail_preexec: strips @j of all options handled by minijail_enter()
77  * @j jail to strip
78  */
79 extern void minijail_preexec(struct minijail *j);
80 
81 /* minijail_preenter: strips @j of all options handled by minijail_run()
82  * @j jail to strip
83  */
84 extern void minijail_preenter(struct minijail *j);
85 
86 #endif /* !LIBMINIJAIL_PRIVATE_H */
87