diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c index 0230821d22..5bfa028b39 100644 --- a/src/basic/hostname-util.c +++ b/src/basic/hostname-util.c @@ -143,9 +143,7 @@ char* hostname_cleanup(char *s) { assert(s); - strshorten(s, HOST_NAME_MAX); - - for (p = s, d = s, dot = hyphen = true; *p; p++) + for (p = s, d = s, dot = hyphen = true; *p && d - s < HOST_NAME_MAX; p++) if (*p == '.') { if (dot || hyphen) continue; diff --git a/src/test/test-hostname-util.c b/src/test/test-hostname-util.c index 596830f5f2..4126a24ceb 100644 --- a/src/test/test-hostname-util.c +++ b/src/test/test-hostname-util.c @@ -85,6 +85,8 @@ static void test_hostname_cleanup(void) { assert_se(streq(hostname_cleanup(s), "foo.bar")); s = strdupa("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); assert_se(streq(hostname_cleanup(s), "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")); + s = strdupa("xxxx........xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); + assert_se(streq(hostname_cleanup(s), "xxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")); } static void test_read_etc_hostname(void) {