network: make config_parse_radv_search_domains() log error in dns_name_apply_idna()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 8 Nov 2018 03:29:38 +0000 (12:29 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 8 Nov 2018 03:29:38 +0000 (12:29 +0900)
src/network/networkd-network.c

index f257ac6..fb4c519 100644 (file)
@@ -1154,8 +1154,7 @@ int config_parse_radv_search_domains(
         assert(rvalue);
 
         for (;;) {
-                _cleanup_free_ char *w = NULL;
-                _cleanup_free_ char *idna = NULL;
+                _cleanup_free_ char *w = NULL, *idna = NULL;
 
                 r = extract_first_word(&p, &w, NULL, 0);
                 if (r == -ENOMEM)
@@ -1168,11 +1167,15 @@ int config_parse_radv_search_domains(
                         break;
 
                 r = dns_name_apply_idna(w, &idna);
+                if (r < 0) {
+                        log_syntax(unit, LOG_ERR, filename, line, r, "Failed to apply IDNA to domain name '%s', ignoring: %m", w);
+                        continue;
+                }
                 if (r > 0) {
                         r = strv_push(&n->router_search_domains, idna);
                         if (r >= 0)
                                 idna = NULL;
-                } else if (r == 0) {
+                } else {
                         r = strv_push(&n->router_search_domains, w);
                         if (r >= 0)
                                 w = NULL;