MLH Local Hack Day 2018 Project - system for testing ARM assembly snippets
The overall idea of the project was inspired by sites like cpp.sh, which allows you to write C++ code in the browser, run it on a server, and see its output. My website allows you to do much the same, with ARM assembly code. It is designed to run on a Raspberry PI (under Raspbian), and consists of a HTTP frontend written using node.js and expressjs, and a backend compile/execute bash script. The script assembles the input code, generates and assembles setup assembly code from the configuration, and links them both with precompiled units containing an entry point and sandbox system. The executing user code is jailed in an unprivledged chroot environment, as well as a unique Linux PID namespace, and a 1-second execution time limit. The sandbox environment is specifically designed to prevent fork bombs of various types from having significant impact on the host system.