util: make sure result of hostname_cleanup() passes hostname_is_valid()

This commit is contained in:
Lennart Poettering 2013-04-16 03:57:50 +02:00
parent ed85d9a58d
commit cec4ead904
1 changed files with 13 additions and 8 deletions

View File

@ -3837,19 +3837,24 @@ bool hostname_is_valid(const char *s) {
char* hostname_cleanup(char *s) {
char *p, *d;
bool dot;
for (p = s, d = s; *p; p++)
if ((*p >= 'a' && *p <= 'z') ||
(*p >= 'A' && *p <= 'Z') ||
(*p >= '0' && *p <= '9') ||
*p == '-' ||
*p == '_' ||
*p == '.')
for (p = s, d = s, dot = true; *p; p++) {
if (*p == '.') {
if (dot || p[1] == 0)
continue;
dot = true;
} else
dot = false;
if (hostname_valid_char(*p))
*(d++) = *p;
}
*d = 0;
strshorten(s, HOST_NAME_MAX);
return s;
}