From 522a7d6bafcff03c53c3b86766c229195c38f38c Mon Sep 17 00:00:00 2001 From: Jan Vaclav Date: Mon, 15 Jul 2024 14:05:12 +0200 Subject: [PATCH] nm-ip-config: escape searches when exposing to dbus Previously, when a connection was configured with search domains that contained non-ASCII characters, GLib would try to parse the search name as UTF-8, and an assertion would fail (which meant that if NM was running with fatal assertions, it would crash). Expose the search domains only as an escaped string to avoid this. --- src/core/nm-ip-config.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/core/nm-ip-config.c b/src/core/nm-ip-config.c index c4dc04da2a..663e839e4c 100644 --- a/src/core/nm-ip-config.c +++ b/src/core/nm-ip-config.c @@ -162,6 +162,7 @@ get_property_ip(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec NMIPConfig *self = NM_IP_CONFIG(object); NMIPConfigPrivate *priv = NM_IP_CONFIG_GET_PRIVATE(self); const int addr_family = nm_ip_config_get_addr_family(self); + char **to_free = NULL; char sbuf_addr[NM_INET_ADDRSTRLEN]; const char *const *strv; guint len; @@ -193,7 +194,20 @@ get_property_ip(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec break; case PROP_IP_SEARCHES: strv = nm_l3_config_data_get_searches(priv->l3cd, addr_family, &len); + if (strv) { + strv = nm_utils_buf_utf8safe_escape_strv( + strv, + -1, + NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_CTRL + | NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_NON_ASCII, + &to_free); + } + _value_set_variant_as(value, strv, len); + + if (to_free) { + g_strfreev(to_free); + } break; case PROP_IP_DNS_PRIORITY: v_i = nm_l3_config_data_get_dns_priority_or_default(priv->l3cd, addr_family);