blob: eafcdf54f14fca66ed0bbb72d9ab575cd0ae867b [file] [log] [blame]
Elly Jonescd7a9042011-07-22 13:56:51 -04001/* 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
Will Drewry6ac91122011-10-21 16:38:58 -050013/* 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
Will Drewry2f54b6a2011-09-16 13:45:31 -050018static const char *kFdEnvVar = "__MINIJAIL_FD";
Ben Chan541c7e52011-08-26 14:55:53 -070019static const char *kLdPreloadEnvVar = "LD_PRELOAD";
Elly Jonescd7a9042011-07-22 13:56:51 -040020
Will Drewryf89aef52011-09-16 16:48:57 -050021struct minijail;
Elly Jonese1749eb2011-10-07 13:54:59 -040022
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.
Will Drewry2ddaad02011-09-16 11:36:08 -050027 */
28extern size_t minijail_size(const struct minijail *j);
Elly Jonese1749eb2011-10-07 13:54:59 -040029
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 *
Will Drewry2ddaad02011-09-16 11:36:08 -050037 * 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).
Will Drewry2ddaad02011-09-16 11:36:08 -050044 */
45extern int minijail_marshal(const struct minijail *j,
46 char *buf,
Elly Jonese1749eb2011-10-07 13:54:59 -040047 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 */
Will Drewry2ddaad02011-09-16 11:36:08 -050056extern int minijail_unmarshal(struct minijail *j,
57 char *serialized,
58 size_t length);
Elly Jonese1749eb2011-10-07 13:54:59 -040059
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 */
Will Drewryfe4a3722011-09-16 14:50:50 -050066extern int minijail_from_fd(int fd, struct minijail *j);
Elly Jonese1749eb2011-10-07 13:54:59 -040067
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 */
Will Drewryfe4a3722011-09-16 14:50:50 -050074extern int minijail_to_fd(struct minijail *j, int fd);
Elly Jonese1749eb2011-10-07 13:54:59 -040075
76/* minijail_preexec: strips @j of all options handled by minijail_enter()
77 * @j jail to strip
78 */
Will Drewryfe4a3722011-09-16 14:50:50 -050079extern void minijail_preexec(struct minijail *j);
Elly Jonese1749eb2011-10-07 13:54:59 -040080
81/* minijail_preenter: strips @j of all options handled by minijail_run()
82 * @j jail to strip
83 */
Will Drewry2ddaad02011-09-16 11:36:08 -050084extern void minijail_preenter(struct minijail *j);
85
Elly Jonescd7a9042011-07-22 13:56:51 -040086#endif /* !LIBMINIJAIL_PRIVATE_H */