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