imcplugin demo: Extend to support stat() call
[nativeclient.git] / sandbox / linux / nacl_sandbox-main.cc
blob26dde7595c0804ac232845a9fd1b631437ac8f32
1 /*
2 * Copyright 2008, Google Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following disclaimer
13 * in the documentation and/or other materials provided with the
14 * distribution.
15 * * Neither the name of Google Inc. nor the names of its
16 * contributors may be used to endorse or promote products derived from
17 * this software without specific prior written permission.
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 #include <stdio.h>
34 #include <unistd.h>
35 #include <stdlib.h>
36 #include <string.h>
38 #include "native_client/sandbox/linux/nacl_sandbox.h"
40 int main(int argc, char** argv) {
41 if (!NaclSandbox::SelLdrPath(argc, argv, argv[0], strlen(argv[0]))) {
42 return 1;
44 // TODO: This is off by default for now. Change it to an
45 // environment variable which must be set in order to *not* run the
46 // sandbox.
47 if (getenv(NaclSandbox::kTraceSandboxEnvVariable) == NULL) {
48 // Fall through. No sandbox.
49 printf("Warning: starting untraced sel_ldr: %s \n", argv[0]);
50 execv(argv[0], argv);
51 perror("exec");
52 exit(-20);
54 const int kMaxPath = 1024;
55 char app_name[kMaxPath];
56 char* app_ptr = app_name;
57 if (!NaclSandbox::ParseApplicationName(argc, argv, app_ptr, kMaxPath)) {
58 return 1;
60 NaclSandbox::NaclSandbox sandbox;
61 sandbox.Run(app_ptr, argv);
62 return 0;