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