cmd/tailscale: extend hostname validation (#7678)

In addition to checking the total hostname length, validate characters used in each DNS label and label length.

Updates https://github.com/tailscale/corp/issues/10012

Signed-off-by: Anton Tolchanov <anton@tailscale.com>
This commit is contained in:
Anton Tolchanov
2023-03-27 18:21:58 +01:00
committed by GitHub
parent 43f7ec48ca
commit 2a933c1903
4 changed files with 52 additions and 4 deletions

View File

@@ -214,6 +214,21 @@ func FirstLabel(hostname string) string {
return first
}
// ValidHostname checks if a string is a valid hostname.
func ValidHostname(hostname string) error {
fqdn, err := ToFQDN(hostname)
if err != nil {
return err
}
for _, label := range strings.Split(fqdn.WithoutTrailingDot(), ".") {
if err := ValidLabel(label); err != nil {
return err
}
}
return nil
}
var separators = map[byte]bool{
' ': true,
'.': true,