Skip to content

Commit

Permalink
embed: reject binding listeners to domain names
Browse files Browse the repository at this point in the history
  • Loading branch information
heyitsanthony committed Sep 6, 2016
1 parent da6a0f0 commit 2752169
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions embed/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package embed
import (
"fmt"
"io/ioutil"
"net"
"net/http"
"net/url"
"strings"
Expand Down Expand Up @@ -253,6 +254,13 @@ func (cfg *configYAML) configFromFile(path string) error {
}

func (cfg *Config) Validate() error {
if err := checkBindURLs(cfg.LPUrls); err != nil {
return err
}
if err := checkBindURLs(cfg.LCUrls); err != nil {
return err
}

// Check if conflicting flags are passed.
nSet := 0
for _, v := range []bool{cfg.Durl != "", cfg.InitialCluster != "", cfg.DNSCluster != ""} {
Expand Down Expand Up @@ -346,3 +354,22 @@ func (cfg Config) IsDefaultHost() (string, error) {
}
return "", defaultHostStatus
}

// checkBindURLs returns an error if any URL uses a domain name.
func checkBindURLs(urls []url.URL) error {
for _, url := range urls {
if url.Scheme == "unix" || url.Scheme == "unixs" {
continue
}
host := strings.Split(url.Host, ":")[0]
if host == "localhost" {
// special case for local address
// TODO: support /etc/hosts ?
continue
}
if net.ParseIP(host) == nil {
return fmt.Errorf("expected IP in URL for binding (%s)", url.String())
}
}
return nil
}

0 comments on commit 2752169

Please sign in to comment.