diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index f257ac6698..4eb553125b 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -369,6 +369,7 @@ void network_free(Network *network) { strv_free(network->search_domains); strv_free(network->route_domains); strv_free(network->bind_carrier); + strv_free(network->router_search_domains); netdev_unref(network->bridge); netdev_unref(network->bond); @@ -1154,8 +1155,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 +1168,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; diff --git a/test/fuzz/fuzz-netdev-parser/oss-fuzz-11286 b/test/fuzz/fuzz-netdev-parser/oss-fuzz-11286 new file mode 100644 index 0000000000..cde4ee8e43 Binary files /dev/null and b/test/fuzz/fuzz-netdev-parser/oss-fuzz-11286 differ diff --git a/test/fuzz/fuzz-netdev-parser/oss-fuzz-11287 b/test/fuzz/fuzz-netdev-parser/oss-fuzz-11287 new file mode 100644 index 0000000000..03ab20694d Binary files /dev/null and b/test/fuzz/fuzz-netdev-parser/oss-fuzz-11287 differ diff --git a/test/fuzz/fuzz-netdev-parser/oss-fuzz-11296 b/test/fuzz/fuzz-netdev-parser/oss-fuzz-11296 new file mode 100644 index 0000000000..05d57f702b Binary files /dev/null and b/test/fuzz/fuzz-netdev-parser/oss-fuzz-11296 differ diff --git a/test/fuzz/fuzz-netdev-parser/oss-fuzz-11297 b/test/fuzz/fuzz-netdev-parser/oss-fuzz-11297 new file mode 100644 index 0000000000..f4baa0bf7a Binary files /dev/null and b/test/fuzz/fuzz-netdev-parser/oss-fuzz-11297 differ diff --git a/test/fuzz/fuzz-netdev-parser/oss-fuzz-11299 b/test/fuzz/fuzz-netdev-parser/oss-fuzz-11299 new file mode 100644 index 0000000000..295a1d08ad Binary files /dev/null and b/test/fuzz/fuzz-netdev-parser/oss-fuzz-11299 differ diff --git a/test/fuzz/fuzz-network-parser/oss-fuzz-11285 b/test/fuzz/fuzz-network-parser/oss-fuzz-11285 new file mode 100644 index 0000000000..e0aad02cdb --- /dev/null +++ b/test/fuzz/fuzz-network-parser/oss-fuzz-11285 @@ -0,0 +1,2 @@ +[IPv6PrefixDelegation] +Domains=m \ No newline at end of file