From 00cf4fcf1414a5b633725f053c3d799b619cb2ed Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Sat, 2 Nov 2019 13:56:13 +0100
Subject: core.configmanager: Handle nameprep validation errors

---
 core/configmanager.lua | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/core/configmanager.lua b/core/configmanager.lua
index 8ed74e3c..ae0a274a 100644
--- a/core/configmanager.lua
+++ b/core/configmanager.lua
@@ -141,7 +141,11 @@ do
 			if not name then
 				error("Host must have a name", 2);
 			end
-			name = nameprep(name);
+			local prepped_name = nameprep(name);
+			if not prepped_name then
+				error(format("Name of Host %q contains forbidden characters", name), 0);
+			end
+			name = prepped_name;
 			if rawget(config_table, name) and rawget(config_table[name], "component_module") then
 				error(format("Host %q clashes with previously defined %s Component %q, for services use a sub-domain like conference.%s",
 					name, config_table[name].component_module:gsub("^%a+$", { component = "external", muc = "MUC"}), name, name), 0);
@@ -162,7 +166,11 @@ do
 			if not name then
 				error("Component must have a name", 2);
 			end
-			name = nameprep(name);
+			local prepped_name = nameprep(name);
+			if not prepped_name then
+				error(format("Name of Component %q contains forbidden characters", name), 0);
+			end
+			name = prepped_name;
 			if rawget(config_table, name) and rawget(config_table[name], "defined")
 				and not rawget(config_table[name], "component_module") then
 				error(format("Component %q clashes with previously defined Host %q, for services use a sub-domain like conference.%s",
-- 
cgit v1.2.3