README
1 This is a prototype for plumbing Mojo into the NaCl sandbox. It is
2 currently insecure (see below), does not provide a stable ABI (IRT
3 support must be added), and does not support Mojo functions that
4 return pointers (for example, MojoMapBuffer).
5
6 generator/interface.py contains a programmatic description of the
7 stable Mojo interface. This will need to be updated as the interface
8 changes. Run generator/generate_nacl_bindings.py to generate the
9 bindings that plumb this interface into the NaCl sandbox.
10
11 To test: Build "monacl_shell" and "monacl_test". Run monacl_shell
12 with the IRT as the first argument and the monacl_test as the second
13 argument. For example, to run a Debug 32-bit Intel build:
14
15 cd out/Debug
16 ./monacl_shell irt_core_newlib_x32.nexe monacl_test_newlib_x32.nexe
17
18 Security TODO list:
19 Separate trusted and untrusted Mojo handles.
20 Validate and copy option structures.
21 Protect untrusted buffers passed into Mojo:
22 NaClVmIoWillStart/HasEnded.
23 volatile accesses to untrusted memory (untrusted code could race).
24 Overflow checking in array bounds validation.