diff --git a/builder/virtualbox/builder.go b/builder/virtualbox/builder.go index 2cb149091..ab4e2314d 100644 --- a/builder/virtualbox/builder.go +++ b/builder/virtualbox/builder.go @@ -109,6 +109,10 @@ func (b *Builder) Prepare(raw interface{}) error { } } + if b.config.SSHHostPortMin > b.config.SSHHostPortMax { + errs = append(errs, errors.New("ssh_host_port_min must be less than ssh_host_port_max")) + } + b.driver, err = b.newDriver() if err != nil { errs = append(errs, fmt.Errorf("Failed creating VirtualBox driver: %s", err)) diff --git a/builder/virtualbox/builder_test.go b/builder/virtualbox/builder_test.go index 7fbba664f..9347a5f94 100644 --- a/builder/virtualbox/builder_test.go +++ b/builder/virtualbox/builder_test.go @@ -122,3 +122,32 @@ func TestBuilderPrepare_ISOUrl(t *testing.T) { t.Fatalf("iso_url should be modified: %s", b.config.ISOUrl) } } + +func TestBuilderPrepare_SSHHostPort(t *testing.T) { + var b Builder + config := testConfig() + + // Bad + config["ssh_host_port_min"] = 1000 + config["ssh_host_port_max"] = 500 + err := b.Prepare(config) + if err == nil { + t.Fatal("should have error") + } + + // Bad + config["ssh_host_port_min"] = -500 + err = b.Prepare(config) + if err == nil { + t.Fatal("should have error") + } + + // Good + config["ssh_host_port_min"] = 500 + config["ssh_host_port_max"] = 1000 + err = b.Prepare(config) + if err != nil { + t.Fatalf("should not have error: %s", err) + } +} +