diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index ee57152da7..2a8a04cacb 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -30472,6 +30472,9 @@ virDomainMachineNameAppendValid(virBufferPtr buf,
 
         virBufferAddChar(buf, *name);
     }
+
+    /* trailing dashes are not allowed */
+    virBufferTrimChars(buf, "-");
 }
 
 #undef HOSTNAME_CHARS
diff --git a/tests/virsystemdtest.c b/tests/virsystemdtest.c
index 9b95ca6789..26876850b8 100644
--- a/tests/virsystemdtest.c
+++ b/tests/virsystemdtest.c
@@ -740,6 +740,10 @@ mymain(void)
                  "qemu-7-123456789012345678901234567890123456789012345678901234567");
     TEST_MACHINE("123456789012345678901234567890123456789012345678901234567890", 8,
                  "qemu-8-123456789012345678901234567890123456789012345678901234567");
+    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");
 
 # define TESTS_PM_SUPPORT_HELPER(name, function) \
     do { \