From f146a31ded2969e90a2a61170aa311add321c9fb Mon Sep 17 00:00:00 2001 From: Sander van Harmelen Date: Thu, 21 May 2015 23:36:54 +0200 Subject: [PATCH] Fixing #2033 by adding a small check on the input MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the input begins with a shebang, we’ll leave it as is. If not we’ll add a default shebang… --- communicator/ssh/communicator.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/communicator/ssh/communicator.go b/communicator/ssh/communicator.go index 7cf03c870a..402331da11 100644 --- a/communicator/ssh/communicator.go +++ b/communicator/ssh/communicator.go @@ -222,10 +222,19 @@ func (c *Communicator) Upload(path string, input io.Reader) error { // UploadScript implementation of communicator.Communicator interface func (c *Communicator) UploadScript(path string, input io.Reader) error { - script := bytes.NewBufferString(DefaultShebang) - script.ReadFrom(input) + reader := bufio.NewReader(input) + prefix, err := reader.Peek(2) + if err != nil { + return fmt.Errorf("Error reading script: %s", err) + } - if err := c.Upload(path, script); err != nil { + var script bytes.Buffer + if string(prefix) != "#!" { + script.WriteString(DefaultShebang) + } + + script.ReadFrom(reader) + if err := c.Upload(path, &script); err != nil { return err }