diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c index 3161560ee9..b8a53bff0a 100644 --- a/src/core/devices/nm-device.c +++ b/src/core/devices/nm-device.c @@ -12968,7 +12968,7 @@ impl_device_get_applied_connection(NMDBusObject * obj, var_settings = nm_connection_to_dbus(applied_connection, NM_CONNECTION_SERIALIZE_WITH_NON_SECRET); if (!var_settings) - var_settings = g_variant_new_array(G_VARIANT_TYPE("{sa{sv}}"), NULL, 0); + var_settings = nm_g_variant_singleton_aLsaLsvII(); g_dbus_method_invocation_return_value( invocation, @@ -17900,7 +17900,6 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { NMDevice * self = NM_DEVICE(object); NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self); - GVariantBuilder array_builder; switch (prop_id) { case PROP_UDI: @@ -18051,12 +18050,10 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) g_value_set_uint(value, priv->metered); break; case PROP_LLDP_NEIGHBORS: - if (priv->lldp_listener) - g_value_set_variant(value, nm_lldp_listener_get_neighbors(priv->lldp_listener)); - else { - g_variant_builder_init(&array_builder, G_VARIANT_TYPE("aa{sv}")); - g_value_take_variant(value, g_variant_builder_end(&array_builder)); - } + g_value_set_variant(value, + priv->lldp_listener + ? nm_lldp_listener_get_neighbors(priv->lldp_listener) + : nm_g_variant_singleton_aaLsvI()); break; case PROP_REAL: g_value_set_boolean(value, nm_device_is_real(self)); diff --git a/src/core/nm-dhcp-config.c b/src/core/nm-dhcp-config.c index 718d3c90ec..c26b371dca 100644 --- a/src/core/nm-dhcp-config.c +++ b/src/core/nm-dhcp-config.c @@ -116,8 +116,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) switch (prop_id) { case PROP_OPTIONS: - g_value_set_variant(value, - priv->options ?: g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0)); + g_value_set_variant(value, priv->options ?: nm_g_variant_singleton_aLsvI()); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); diff --git a/src/core/nm-dispatcher.c b/src/core/nm-dispatcher.c index 5862dd0a82..81076810e4 100644 --- a/src/core/nm-dispatcher.c +++ b/src/core/nm-dispatcher.c @@ -552,7 +552,7 @@ _dispatcher_call(NMDispatcherAction action, connection_dict = nm_connection_to_dbus(applied_connection, NM_CONNECTION_SERIALIZE_WITH_NON_SECRET); else - connection_dict = g_variant_new_array(G_VARIANT_TYPE("{sa{sv}}"), NULL, 0); + connection_dict = nm_g_variant_singleton_aLsaLsvII(); g_variant_builder_init(&connection_props, G_VARIANT_TYPE_VARDICT); if (settings_connection) { @@ -620,8 +620,8 @@ _dispatcher_call(NMDispatcherAction action, &device_proxy_props, &device_ip4_props, &device_ip6_props, - device_dhcp4_props ?: g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0), - device_dhcp6_props ?: g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0), + device_dhcp4_props ?: nm_g_variant_singleton_aLsvI(), + device_dhcp6_props ?: nm_g_variant_singleton_aLsvI(), connectivity_state_string, vpn_iface ?: "", &vpn_proxy_props, diff --git a/src/core/nm-manager.c b/src/core/nm-manager.c index b3e6535506..50d2e3225a 100644 --- a/src/core/nm-manager.c +++ b/src/core/nm-manager.c @@ -5637,7 +5637,7 @@ activation_add_done(NMSettings * settings, result_floating = g_variant_new("(oo@a{sv})", nm_dbus_object_get_path(NM_DBUS_OBJECT(new_connection)), nm_dbus_object_get_path(NM_DBUS_OBJECT(active)), - g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0)); + nm_g_variant_singleton_aLsvI()); } g_dbus_method_invocation_return_value(context, result_floating); diff --git a/src/core/settings/nm-settings-connection.c b/src/core/settings/nm-settings-connection.c index 294cb04705..7b5477f477 100644 --- a/src/core/settings/nm-settings-connection.c +++ b/src/core/settings/nm-settings-connection.c @@ -1868,7 +1868,7 @@ dbus_get_agent_secrets_cb(NMSettingsConnection * self, dict = nm_connection_to_dbus(nm_settings_connection_get_connection(self), NM_CONNECTION_SERIALIZE_WITH_SECRETS); if (!dict) - dict = g_variant_new_array(G_VARIANT_TYPE("{sa{sv}}"), NULL, 0); + dict = nm_g_variant_singleton_aLsaLsvII(); g_dbus_method_invocation_return_value(context, g_variant_new("(@a{sa{sv}})", dict)); } } diff --git a/src/libnm-client-impl/nm-client.c b/src/libnm-client-impl/nm-client.c index f4a93f9f3c..4dd9bccb60 100644 --- a/src/libnm-client-impl/nm-client.c +++ b/src/libnm-client-impl/nm-client.c @@ -5137,11 +5137,11 @@ _add_and_activate_connection(NMClient * self, if (partial) arg_connection = nm_connection_to_dbus(partial, NM_CONNECTION_SERIALIZE_ALL); if (!arg_connection) - arg_connection = g_variant_new_array(G_VARIANT_TYPE("{sa{sv}}"), NULL, 0); + arg_connection = nm_g_variant_singleton_aLsaLsvII(); if (is_v2) { if (!options) - options = g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0); + options = nm_g_variant_singleton_aLsvI(); use_add_and_activate_v2 = TRUE; source_tag = nm_client_add_and_activate_connection2; } else { @@ -5641,7 +5641,7 @@ _add_connection_call(NMClient * self, NML_NMCLIENT_LOG_D(self, "AddConnection() started..."); if (!settings) - settings = g_variant_new_array(G_VARIANT_TYPE("{sa{sv}}"), NULL, 0); + settings = nm_g_variant_singleton_aLsaLsvII(); /* Although AddConnection2() being capable to handle also AddConnection() and * AddConnectionUnsaved() variants, we prefer to use the old D-Bus methods when @@ -5678,24 +5678,23 @@ _add_connection_call(NMClient * self, NM_DBUS_DEFAULT_TIMEOUT_MSEC, _add_connection_cb_without_extra_result); } else { - _nm_client_dbus_call( - self, - self, - source_tag, - cancellable, - callback, - user_data, - NM_DBUS_PATH_SETTINGS, - NM_DBUS_INTERFACE_SETTINGS, - "AddConnection2", - g_variant_new("(@a{sa{sv}}u@a{sv})", - settings, - (guint32) flags, - args ?: g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0)), - G_VARIANT_TYPE("(oa{sv})"), - G_DBUS_CALL_FLAGS_NONE, - NM_DBUS_DEFAULT_TIMEOUT_MSEC, - _add_connection_cb_with_extra_result); + _nm_client_dbus_call(self, + self, + source_tag, + cancellable, + callback, + user_data, + NM_DBUS_PATH_SETTINGS, + NM_DBUS_INTERFACE_SETTINGS, + "AddConnection2", + g_variant_new("(@a{sa{sv}}u@a{sv})", + settings, + (guint32) flags, + args ?: nm_g_variant_singleton_aLsvI()), + G_VARIANT_TYPE("(oa{sv})"), + G_DBUS_CALL_FLAGS_NONE, + NM_DBUS_DEFAULT_TIMEOUT_MSEC, + _add_connection_cb_with_extra_result); } } diff --git a/src/libnm-client-impl/nm-device-wifi-p2p.c b/src/libnm-client-impl/nm-device-wifi-p2p.c index 05c430f7d3..2daaf77484 100644 --- a/src/libnm-client-impl/nm-device-wifi-p2p.c +++ b/src/libnm-client-impl/nm-device-wifi-p2p.c @@ -156,7 +156,7 @@ nm_device_wifi_p2p_start_find(NMDeviceWifiP2P * device, g_return_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable)); if (!options) - options = g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0); + options = nm_g_variant_singleton_aLsvI(); _nm_client_dbus_call(_nm_object_get_client(device), device, diff --git a/src/libnm-client-impl/nm-device-wifi.c b/src/libnm-client-impl/nm-device-wifi.c index 84c3a069dc..fee7e8a2d8 100644 --- a/src/libnm-client-impl/nm-device-wifi.c +++ b/src/libnm-client-impl/nm-device-wifi.c @@ -309,7 +309,7 @@ nm_device_wifi_request_scan_options(NMDeviceWifi *device, g_return_val_if_fail(!error || !*error, FALSE); if (!options) - options = g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0); + options = nm_g_variant_singleton_aLsvI(); return _nm_client_dbus_call_sync_void(_nm_object_get_client(device), cancellable, @@ -382,7 +382,7 @@ nm_device_wifi_request_scan_options_async(NMDeviceWifi * device, g_return_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable)); if (!options) - options = g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0); + options = nm_g_variant_singleton_aLsvI(); _nm_client_dbus_call(_nm_object_get_client(device), device, diff --git a/src/libnm-client-impl/nm-device.c b/src/libnm-client-impl/nm-device.c index ee0d88a0db..4d097935cb 100644 --- a/src/libnm-client-impl/nm-device.c +++ b/src/libnm-client-impl/nm-device.c @@ -2303,7 +2303,7 @@ nm_device_reapply(NMDevice * device, if (connection) arg_connection = nm_connection_to_dbus(connection, NM_CONNECTION_SERIALIZE_ALL); if (!arg_connection) - arg_connection = g_variant_new_array(G_VARIANT_TYPE("{sa{sv}}"), NULL, 0); + arg_connection = nm_g_variant_singleton_aLsaLsvII(); return _nm_client_dbus_call_sync_void( _nm_object_get_client(device), @@ -2355,7 +2355,7 @@ nm_device_reapply_async(NMDevice * device, if (connection) arg_connection = nm_connection_to_dbus(connection, NM_CONNECTION_SERIALIZE_ALL); if (!arg_connection) - arg_connection = g_variant_new_array(G_VARIANT_TYPE("{sa{sv}}"), NULL, 0); + arg_connection = nm_g_variant_singleton_aLsaLsvII(); _nm_client_dbus_call(_nm_object_get_client(device), device, diff --git a/src/libnm-client-impl/nm-remote-connection.c b/src/libnm-client-impl/nm-remote-connection.c index 007da3aa87..12d0da98ae 100644 --- a/src/libnm-client-impl/nm-remote-connection.c +++ b/src/libnm-client-impl/nm-remote-connection.c @@ -95,9 +95,9 @@ nm_remote_connection_update2(NMRemoteConnection * connection, g_return_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable)); if (!settings) - settings = g_variant_new_array(G_VARIANT_TYPE("{sa{sv}}"), NULL, 0); + settings = nm_g_variant_singleton_aLsaLsvII(); if (!args) - args = g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0); + args = nm_g_variant_singleton_aLsvI(); _nm_client_dbus_call(_nm_object_get_client(connection), connection, @@ -185,7 +185,7 @@ nm_remote_connection_commit_changes(NMRemoteConnection *connection, nm_connection_to_dbus(NM_CONNECTION(connection), NM_CONNECTION_SERIALIZE_ALL), (guint32)(save_to_disk ? NM_SETTINGS_UPDATE2_FLAG_TO_DISK : NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY), - g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0)), + nm_g_variant_singleton_aLsvI()), G_VARIANT_TYPE("(a{sv})"), G_DBUS_CALL_FLAGS_NONE, NM_DBUS_DEFAULT_TIMEOUT_MSEC, diff --git a/src/libnm-core-impl/tests/test-secrets.c b/src/libnm-core-impl/tests/test-secrets.c index 0d33df6e97..41dcc4b312 100644 --- a/src/libnm-core-impl/tests/test-secrets.c +++ b/src/libnm-core-impl/tests/test-secrets.c @@ -526,20 +526,25 @@ test_update_secrets_whole_connection(void) static void test_update_secrets_whole_connection_empty_hash(void) { - NMConnection *connection; - GVariant * secrets; - GError * error = NULL; - gboolean success; + gs_unref_object NMConnection *connection = NULL; + GVariant * secrets; + GError * error = NULL; + gboolean success; /* Test that updating secrets with an empty connection hash returns success */ connection = wifi_connection_new(); secrets = g_variant_new_array(G_VARIANT_TYPE("{sa{sv}}"), NULL, 0); success = nm_connection_update_secrets(connection, NULL, secrets, &error); - g_assert_no_error(error); - g_assert(success == TRUE); + nmtst_assert_success(success, error); g_variant_unref(secrets); - g_object_unref(connection); + + g_clear_object(&connection); + + connection = wifi_connection_new(); + secrets = nm_g_variant_singleton_aLsaLsvII(); + success = nm_connection_update_secrets(connection, NULL, secrets, &error); + nmtst_assert_success(success, error); } static void