add proto validation at parse
Docker-DCO-1.1-Signed-off-by: Victor Vieux <vieux@docker.com> (github: vieux)
This commit is contained in:
parent
b292928cd5
commit
0633b12b28
1 changed files with 14 additions and 1 deletions
15
nat/nat.go
15
nat/nat.go
|
@ -5,9 +5,10 @@ package nat
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/dotcloud/docker/utils"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/dotcloud/docker/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -72,6 +73,15 @@ func SplitProtoPort(rawPort string) (string, string) {
|
||||||
return parts[1], parts[0]
|
return parts[1], parts[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func validateProto(proto string) bool {
|
||||||
|
for _, availableProto := range []string{"tcp", "udp"} {
|
||||||
|
if availableProto == proto {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// We will receive port specs in the format of ip:public:private/proto and these need to be
|
// We will receive port specs in the format of ip:public:private/proto and these need to be
|
||||||
// parsed in the internal types
|
// parsed in the internal types
|
||||||
func ParsePortSpecs(ports []string) (map[Port]struct{}, map[Port][]PortBinding, error) {
|
func ParsePortSpecs(ports []string) (map[Port]struct{}, map[Port][]PortBinding, error) {
|
||||||
|
@ -113,6 +123,9 @@ func ParsePortSpecs(ports []string) (map[Port]struct{}, map[Port][]PortBinding,
|
||||||
if _, err := strconv.ParseUint(hostPort, 10, 16); hostPort != "" && err != nil {
|
if _, err := strconv.ParseUint(hostPort, 10, 16); hostPort != "" && err != nil {
|
||||||
return nil, nil, fmt.Errorf("Invalid hostPort: %s", hostPort)
|
return nil, nil, fmt.Errorf("Invalid hostPort: %s", hostPort)
|
||||||
}
|
}
|
||||||
|
if !validateProto(proto) {
|
||||||
|
return nil, nil, fmt.Errorf("Invalid proto: %s", proto)
|
||||||
|
}
|
||||||
|
|
||||||
port := NewPort(proto, containerPort)
|
port := NewPort(proto, containerPort)
|
||||||
if _, exists := exposedPorts[port]; !exists {
|
if _, exists := exposedPorts[port]; !exists {
|
||||||
|
|
Loading…
Reference in a new issue