MXS-3326 Fix hostname validation
A hyphen '-' is a valid character in a domain name, as long as it is not the first character and does not appear two in a row.
This commit is contained in:
@ -52,13 +52,15 @@ bool is_valid_ipv6(const std::string& ip)
|
|||||||
bool is_valid_hostname(const std::string& hn)
|
bool is_valid_hostname(const std::string& hn)
|
||||||
{
|
{
|
||||||
auto invalid_char = [](char ch) {
|
auto invalid_char = [](char ch) {
|
||||||
bool valid = std::isalnum(ch) || ch == '_' || ch == '.';
|
bool valid = std::isalnum(ch) || ch == '_' || ch == '.' || ch == '-';
|
||||||
return !valid;
|
return !valid;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool ret = std::none_of(begin(hn), end(hn), invalid_char)
|
bool ret = std::none_of(begin(hn), end(hn), invalid_char)
|
||||||
&& hn.front() != '_'
|
&& hn.front() != '_'
|
||||||
&& (hn.length() <= 253 && hn.length() > 0);
|
&& hn.front() != '-'
|
||||||
|
&& (hn.length() <= 253 && hn.length() > 0)
|
||||||
|
&& hn.find("--") == std::string::npos;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user