diff options
| author | Michael Biebl <biebl@debian.org> | 2025-09-12 19:47:07 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2025-09-12 19:47:07 +0200 |
| commit | bc5f10851bffd6af1c2855635be7a28b6dba3195 (patch) | |
| tree | d47255895378efcdc0a32c2ddeed055f76935654 /src/libnm-core-impl/nm-setting-wireguard.c | |
| parent | 7e9091a5960f67a84787c03153324915220e4816 (diff) | |
New upstream version 1.54.1 upstream/1.54.1
Diffstat (limited to 'src/libnm-core-impl/nm-setting-wireguard.c')
| -rw-r--r-- | src/libnm-core-impl/nm-setting-wireguard.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/libnm-core-impl/nm-setting-wireguard.c b/src/libnm-core-impl/nm-setting-wireguard.c index 668af1f6..614be0f6 100644 --- a/src/libnm-core-impl/nm-setting-wireguard.c +++ b/src/libnm-core-impl/nm-setting-wireguard.c @@ -1477,6 +1477,7 @@ peers_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil) for (i_peer = 0; i_peer < n_peers; i_peer++) { const NMWireGuardPeer *peer = _peers_get(priv, i_peer)->peer; GVariantBuilder builder; + gboolean has_secrets = FALSE; if (!peer->public_key) continue; @@ -1496,11 +1497,13 @@ peers_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil) g_variant_new_string(nm_sock_addr_endpoint_get_endpoint(peer->endpoint))); if (_nm_connection_serialize_secrets(flags, peer->preshared_key_flags) - && peer->preshared_key) + && peer->preshared_key) { g_variant_builder_add(&builder, "{sv}", NM_WIREGUARD_PEER_ATTR_PRESHARED_KEY, g_variant_new_string(peer->preshared_key)); + has_secrets = TRUE; + } if (_nm_connection_serialize_non_secret(flags) && peer->preshared_key_flags != NM_SETTING_SECRET_FLAG_NOT_REQUIRED) @@ -1546,6 +1549,20 @@ peers_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil) g_variant_new_strv(strv, peer->allowed_ips->len)); } + if (NM_FLAGS_ANY(flags, + NM_CONNECTION_SERIALIZE_ONLY_SECRETS + | NM_CONNECTION_SERIALIZE_WITH_SECRETS_AGENT_OWNED + | NM_CONNECTION_SERIALIZE_WITH_SECRETS_SYSTEM_OWNED + | NM_CONNECTION_SERIALIZE_WITH_SECRETS_NOT_SAVED) + && !_nm_connection_serialize_non_secret(flags)) { + /* The flags indicate that only secrets must be serialized and this + * peer doesn't contain any. Skip the peer. */ + if (!has_secrets) { + g_variant_builder_clear(&builder); + continue; + } + } + if (!any_peers) { g_variant_builder_init(&peers_builder, G_VARIANT_TYPE("aa{sv}")); any_peers = TRUE; |