@@ -13,7 +13,6 @@ import (
1313"os/exec"
1414"path"
1515"strconv"
16- "strings"
1716"time"
1817)
1918
@@ -23,15 +22,14 @@ type Response struct {
2322Output string `json:"output"`
2423Error string `json:"error"`
2524ExecutionTime int64 `json:"time"`
26- Code string `json:"code"`
2725}
2826
2927func (r Response ) toJSON () string {
3028data , _ := json .Marshal (r )
3129return string (data )
3230}
3331
34- func execSandbox (interpreter string , timeout time.Duration , code * string ) * Response {
32+ func execSandbox (interpreter string , timeout time.Duration , code [] byte ) * Response {
3533res := Response {}
3634ApplySyscallRestrictions ()
3735
@@ -40,8 +38,7 @@ func execSandbox(interpreter string, timeout time.Duration, code *string) *Respo
4038defer cancel ()
4139
4240cmd := exec .CommandContext (ctx , interpreter )
43- cmd .Stdin = strings .NewReader (* code )
44- res .Code = * code
41+ cmd .Stdin = bytes .NewReader (code )
4542
4643var errBuffer bytes.Buffer
4744cmd .Stderr = & errBuffer
@@ -95,15 +92,15 @@ func main() {
9592
9693debug ("reading file: %s" , filename )
9794code , err := ioutil .ReadFile (filename )
98- data := string (code )
95+ // data := string(code)
9996
10097if err != nil {
10198panic (err .Error ())
10299}
103100
104101var (
105102interpreter string
106- response Response
103+ response * Response
107104)
108105
109106switch language {
@@ -115,12 +112,12 @@ func main() {
115112case "node" :
116113interpreter = "node"
117114default :
118- response . Error = fmt . Sprintf ( "unrecognized language %q" , language )
115+ response = & Response { Error : "unrecognized language: " + language }
119116fmt .Print (response .toJSON ())
120117return
121118}
122119
123- response = * execSandbox (interpreter , duration , & data )
120+ response = execSandbox (interpreter , duration , code )
124121
125122fmt .Print (response .toJSON ())
126123}
0 commit comments