Home | History | Annotate | Download | only in minijail
      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