]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolve: ignore invalid service template name 17649/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 17 Nov 2020 18:32:37 +0000 (03:32 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 17 Nov 2020 18:32:40 +0000 (03:32 +0900)
Let's fiest test the template name, and then assign it.

src/resolve/resolved-conf.c

index fd3c1bfecde2c398bc25b9317e57bd1b80ca1cfe..92a7b168c260f6476bff712193c00775226d4943 100644 (file)
@@ -255,20 +255,21 @@ int config_parse_dnssd_service_name(
                 return 0;
         }
 
-        r = free_and_strdup(&s->name_template, rvalue);
-        if (r < 0)
-                return log_oom();
-
-        r = specifier_printf(s->name_template, specifier_table, NULL, &name);
-        if (r < 0)
-                return log_debug_errno(r, "Failed to replace specifiers: %m");
+        r = specifier_printf(rvalue, specifier_table, NULL, &name);
+        if (r < 0) {
+                log_syntax(unit, LOG_WARNING, filename, line, r,
+                           "Invalid service instance name template '%s', ignoring assignment: %m", rvalue);
+                return 0;
+        }
 
         if (!dns_service_name_is_valid(name)) {
-                log_syntax(unit, LOG_ERR, filename, line, 0, "Service instance name template renders to invalid name '%s'. Ignoring.", name);
-                return -EINVAL;
+                log_syntax(unit, LOG_WARNING, filename, line, 0,
+                           "Service instance name template '%s' renders to invalid name '%s'. Ignoring assignment.",
+                           rvalue, name);
+                return 0;
         }
 
-        return 0;
+        return free_and_strdup_warn(&s->name_template, rvalue);
 }
 
 int config_parse_dnssd_service_type(