mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	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 (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"github.com/dotcloud/docker/utils"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/dotcloud/docker/utils"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
| 
						 | 
				
			
			@ -72,6 +73,15 @@ func SplitProtoPort(rawPort string) (string, string) {
 | 
			
		|||
	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
 | 
			
		||||
// parsed in the internal types
 | 
			
		||||
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 {
 | 
			
		||||
			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)
 | 
			
		||||
		if _, exists := exposedPorts[port]; !exists {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue