From 6c3030c73ab1cd4c2ebcbb74f514927bcd049cb7 Mon Sep 17 00:00:00 2001 From: Taliesin Sisson Date: Wed, 1 Jul 2015 13:46:29 +0100 Subject: [PATCH] Add a little safety around variables that are passed into provisioner. --- provisioner/powershell/provisioner.go | 5 +++-- provisioner/windows-shell/provisioner.go | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/provisioner/powershell/provisioner.go b/provisioner/powershell/provisioner.go index a862ef9b3..477aaf03a 100644 --- a/provisioner/powershell/provisioner.go +++ b/provisioner/powershell/provisioner.go @@ -347,8 +347,9 @@ func (p *Provisioner) createFlattenedEnvVars(elevated bool) (flattened string, e // Split vars into key/value components for _, envVar := range p.config.Vars { keyValue := strings.Split(envVar, "=") - if len(keyValue) != 2 { - err = errors.New("Shell provisioner environment variables must be in key=value format") + + if len(keyValue) != 2 || keyValue[0] == "" { + err = errors.New(fmt.Sprintf("Shell provisioner environment variables must be in key=value format. Currently it is '%s'", envVar)) return } envVars[keyValue[0]] = keyValue[1] diff --git a/provisioner/windows-shell/provisioner.go b/provisioner/windows-shell/provisioner.go index 6e65c8c20..17abcd2d5 100644 --- a/provisioner/windows-shell/provisioner.go +++ b/provisioner/windows-shell/provisioner.go @@ -305,10 +305,10 @@ func (p *Provisioner) createFlattenedEnvVars() (flattened string, err error) { // Split vars into key/value components for _, envVar := range p.config.Vars { keyValue := strings.Split(envVar, "=") - if len(keyValue) != 2 { - err = errors.New("Shell provisioner environment variables must be in key=value format") + if len(keyValue) != 2 || keyValue[0] == "" { + err = errors.New(fmt.Sprintf("Shell provisioner environment variables must be in key=value format. Currently it is '%s'", envVar)) return - } + } envVars[keyValue[0]] = keyValue[1] } // Create a list of env var keys in sorted order