diff --git a/api/main.go b/api/main.go index 21cb1f9..1734be5 100644 --- a/api/main.go +++ b/api/main.go @@ -79,6 +79,7 @@ func Execute(res http.ResponseWriter, req *http.Request) { "kotlin", "lua", "nasm", "asm", + "nasm64", "asm64", "node", "javascript", "js", "perl", "pl", "php", @@ -152,6 +153,8 @@ func launch(request Inbound, res http.ResponseWriter) { execlang = "elixir" case "asm": execlang = "nasm" + case "asm64": + execlang = "nasm64" case "js", "javascript": execlang = "node" case "jl": diff --git a/lxc/execute b/lxc/execute index 0bca774..e19b9f4 100755 --- a/lxc/execute +++ b/lxc/execute @@ -81,6 +81,9 @@ case "$lang" in "nasm" | "asm") bin=nasm ;; +"nasm64" | "asm64") + bin=nasm64 + ;; "node" | "js" | "javascript") bin=node ;; diff --git a/lxc/executors/nasm b/lxc/executors/nasm index df35c10..60c4963 100755 --- a/lxc/executors/nasm +++ b/lxc/executors/nasm @@ -1,4 +1,4 @@ cd /tmp/$2 -timeout -s KILL 10 nasm -f elf64 -o binary.o code.code -timeout -s KILL 10 ld binary.o -o binary +timeout -s KILL 10 nasm -f elf32 -o binary.o code.code +timeout -s KILL 10 ld -m elf_i386 binary.o -o binary runuser runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 ./binary" diff --git a/lxc/executors/nasm64 b/lxc/executors/nasm64 new file mode 100755 index 0000000..8723995 --- /dev/null +++ b/lxc/executors/nasm64 @@ -0,0 +1,4 @@ +cd /tmp/$2 +timeout -s KILL 10 nasm -f elf64 -o binary.o code.code +timeout -s KILL 10 ld -m elf_x86_64 binary.o -o binary +runuser runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 ./binary" diff --git a/lxc/test_all_lxc b/lxc/test_all_lxc index 31ba976..dd7453f 100755 --- a/lxc/test_all_lxc +++ b/lxc/test_all_lxc @@ -23,8 +23,10 @@ echo 'testing js' ../execute js test.js echo 'testing kotlin' ../execute kotlin test.kt -echo 'testing asm' +echo 'testing asm 32 bit' ../execute asm test.nasm +echo 'testing asm 64 bit' +../execute asm64 test64.nasm echo 'testing php' ../execute php test.php echo 'testing perl' diff --git a/lxc/tests/test64.nasm b/lxc/tests/test64.nasm new file mode 100644 index 0000000..191b8d3 --- /dev/null +++ b/lxc/tests/test64.nasm @@ -0,0 +1,18 @@ +SECTION .data + good: db "good", 0x0a, 0x0 + txtlen: equ $ - good + +SECTION .text +GLOBAL _start + +_start: + ;sys_write + mov rax, 1 + mov rdi, 1 + mov rsi, good + mov rdx, txtlen + syscall + ;sys_exit + mov rax, 60 + mov rdi, 0 + syscall