From 4206fd6a22cf0d9219d9db5c89e7c38f5c09c38b Mon Sep 17 00:00:00 2001 From: evilsocket Date: Fri, 17 Aug 2018 15:30:00 +0200 Subject: [PATCH] fix: the data field and the return value of the onData callback for the tcp.proxy are now byte arrays instead of strings (fixes #284) --- modules/tcp_proxy_script.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/modules/tcp_proxy_script.go b/modules/tcp_proxy_script.go index 05370dab..491ea331 100644 --- a/modules/tcp_proxy_script.go +++ b/modules/tcp_proxy_script.go @@ -59,7 +59,7 @@ func (s *TcpProxyScript) doDefines(from, to net.Addr, data []byte) (err error) { } else if err = s.VM.Set("to", addrTo); err != nil { log.Error("Error while defining to: %s", err) return - } else if err = s.VM.Set("data", string(data)); err != nil { + } else if err = s.VM.Set("data", data); err != nil { log.Error("Error while defining data: %s", err) return } @@ -83,9 +83,19 @@ func (s *TcpProxyScript) OnData(from, to net.Addr, data []byte) []byte { return nil } - if !ret.IsUndefined() && ret.IsString() { - return []byte(ret.String()) + exported, err := ret.Export() + if err != nil { + log.Error("Error while exporting results: %s", err) + return nil } + + array, ok := exported.([]byte) + if !ok { + log.Error("Error while casting exported value to array of byte: value = %s", exported) + return nil + } + + return array } return nil