From 3ff27fe469c36e5655231f6759150350b17de298 Mon Sep 17 00:00:00 2001 Message-Id: <3ff27fe469c36e5655231f6759150350b17de298@dist-git> From: Michal Privoznik Date: Fri, 13 Mar 2020 13:08:09 +0100 Subject: [PATCH] conf: Don't generate machine names with a dot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to the linked BZ, machined expects either valid hostname or valid FQDN (see systemd commit v239-3092-gd65652f1f2). While in case of multiple dots, a trailing one doesn't violate FQDN, it does violate the rule in case of something simple, like "domain.". But it's safe to remove it in both cases. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1808499 Fixes: 45464db8ba502764cf37ec9335770248bdb3d9a8 Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko (cherry picked from commit 2695191a44eb7375225b4ad073825ed3563a172a) Signed-off-by: Michal Privoznik Message-Id: <355e05e31ec98522fa0e03a0c2c7af8ca097070d.1584101247.git.mprivozn@redhat.com> Reviewed-by: Ján Tomko --- src/conf/domain_conf.c | 14 +++++++------- tests/virsystemdtest.c | 5 +++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 4b297c96bc..b3c4084c38 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -30688,20 +30688,20 @@ static void virDomainMachineNameAppendValid(virBufferPtr buf, const char *name) { - bool skip_dot = false; + bool skip = true; for (; *name; name++) { if (strlen(virBufferCurrentContent(buf)) >= 64) break; - if (*name == '.') { - if (!skip_dot) + if (*name == '.' || *name == '-') { + if (!skip) virBufferAddChar(buf, *name); - skip_dot = true; + skip = true; continue; } - skip_dot = false; + skip = false; if (!strchr(HOSTNAME_CHARS, *name)) continue; @@ -30709,8 +30709,8 @@ virDomainMachineNameAppendValid(virBufferPtr buf, virBufferAddChar(buf, *name); } - /* trailing dashes are not allowed */ - virBufferTrimChars(buf, "-"); + /* trailing dashes or dots are not allowed */ + virBufferTrimChars(buf, "-."); } #undef HOSTNAME_CHARS diff --git a/tests/virsystemdtest.c b/tests/virsystemdtest.c index 26876850b8..eb510b40e4 100644 --- a/tests/virsystemdtest.c +++ b/tests/virsystemdtest.c @@ -733,7 +733,7 @@ mymain(void) TEST_MACHINE("demo", 1, "qemu-1-demo"); TEST_MACHINE("demo-name", 2, "qemu-2-demo-name"); TEST_MACHINE("demo!name", 3, "qemu-3-demoname"); - TEST_MACHINE(".demo", 4, "qemu-4-.demo"); + TEST_MACHINE(".demo", 4, "qemu-4-demo"); TEST_MACHINE("bull\U0001f4a9", 5, "qemu-5-bull"); TEST_MACHINE("demo..name", 6, "qemu-6-demo.name"); TEST_MACHINE("12345678901234567890123456789012345678901234567890123456789", 7, @@ -743,7 +743,8 @@ mymain(void) TEST_MACHINE("kstest-network-device-default-httpks_(c9eed63e-981e-48ec-acdc-56b3f8c5f678)", 100, "qemu-100-kstest-network-device-default-httpksc9eed63e-981e-48ec"); TEST_MACHINE("kstest-network-device-default-httpks_(c9eed63e-981e-48ec--cdc-56b3f8c5f678)", 10, - "qemu-10-kstest-network-device-default-httpksc9eed63e-981e-48ec"); + "qemu-10-kstest-network-device-default-httpksc9eed63e-981e-48ec-c"); + TEST_MACHINE("demo.-.test.", 11, "qemu-11-demo.test"); # define TESTS_PM_SUPPORT_HELPER(name, function) \ do { \ -- 2.25.1