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