Skip to content

Latest commit

 

History

History

nacl

This is a prototype for plumbing Mojo into the NaCl sandbox.  It is
currently insecure (see below), does not provide a stable ABI (IRT
support must be added), and does not support Mojo functions that
return pointers (for example, MojoMapBuffer).

generator/interface.py contains a programmatic description of the
stable Mojo interface.  This will need to be updated as the interface
changes.  Run generator/generate_nacl_bindings.py to generate the
bindings that plumb this interface into the NaCl sandbox.

To test: Build "monacl_shell" and "monacl_test".  Run monacl_shell
with the IRT as the first argument and the monacl_test as the second
argument.  For example, to run a Debug 32-bit Intel build:

  cd out/Debug
  ./monacl_shell irt_core_newlib_x32.nexe monacl_test_newlib_x32.nexe

Security TODO list:
  Separate trusted and untrusted Mojo handles.
  Validate and copy option structures.
  Protect untrusted buffers passed into Mojo:
    NaClVmIoWillStart/HasEnded.
    volatile accesses to untrusted memory (untrusted code could race).
  Overflow checking in array bounds validation.