From 34970e4141ed5ac2bedce6a6be83bb28515bb96b Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 12 Oct 2016 18:53:08 +0200 Subject: [PATCH 1/6] shared: make nm_str_not_empty() inline function instead of macro It was a macro to pass on the non-const-ness of the argument, but that just doesn't make sense. That is a signature char *nm_str_not_empty (char *) does not make sense, because you cannot transfer ownership conditionally without additional checks to avoid a leak. Which makes this form is pointless. For example: char * foo (void) { char *s; s = _create_value (); return nm_str_not_empty (s); /* leaks "" */ } --- shared/nm-utils/nm-macros-internal.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/shared/nm-utils/nm-macros-internal.h b/shared/nm-utils/nm-macros-internal.h index 0b99b0bf56..26b69bc138 100644 --- a/shared/nm-utils/nm-macros-internal.h +++ b/shared/nm-utils/nm-macros-internal.h @@ -265,13 +265,11 @@ _NM_IN_STRSET_streq (const char *x, const char *s) /*****************************************************************************/ -#define nm_str_not_empty(str) \ - ({ \ - /* implemented as macro to preserve constness */ \ - typeof (str) __str = (str); \ - _nm_unused const char *__str_type_check = __str; \ - ((__str && __str[0]) ? __str : ((char *) NULL)); \ - }) +static inline const char * +nm_str_not_empty (const char *str) +{ + return str && str[0] ? str : NULL; +} static inline char * nm_strdup_not_empty (const char *str) From 16a6991b90de149555dad1bb187282e6bcbdeb9f Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 12 Oct 2016 19:42:59 +0200 Subject: [PATCH 2/6] team: minor cleanup handling empty team config --- src/devices/team/nm-device-team.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/devices/team/nm-device-team.c b/src/devices/team/nm-device-team.c index c2654b7bf9..11dcdaa9ec 100644 --- a/src/devices/team/nm-device-team.c +++ b/src/devices/team/nm-device-team.c @@ -166,18 +166,28 @@ ensure_teamd_connection (NMDevice *device) return !!priv->tdc; } +static const char * +_get_config (NMDeviceTeam *self) +{ + return nm_str_not_empty (NM_DEVICE_TEAM_GET_PRIVATE (self)->config); +} + static gboolean teamd_read_config (NMDevice *device) { NMDeviceTeam *self = NM_DEVICE_TEAM (device); NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (self); - char *config = NULL; + const char *config = NULL; int err; if (priv->tdc) { - err = teamdctl_config_actual_get_raw_direct (priv->tdc, &config); + err = teamdctl_config_actual_get_raw_direct (priv->tdc, (char **) &config); if (err) return FALSE; + if (!config) { + /* set "" to distinguish an empty result from no config at all. */ + config = ""; + } } if (!nm_streq0 (config, priv->config)) { @@ -224,7 +234,7 @@ update_connection (NMDevice *device, NMConnection *connection) priv->tdc = NULL; } - g_object_set (G_OBJECT (s_team), NM_SETTING_TEAM_CONFIG, priv->config, NULL); + g_object_set (G_OBJECT (s_team), _get_config (self), NULL); } /*****************************************************************************/ @@ -768,11 +778,10 @@ get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { NMDeviceTeam *self = NM_DEVICE_TEAM (object); - NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (self); switch (prop_id) { case PROP_CONFIG: - g_value_set_string (value, priv->config); + g_value_set_string (value, _get_config (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); From 7eb054d09973d880c8806f69bc49bf39deba1206 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 12 Oct 2016 19:44:32 +0200 Subject: [PATCH 3/6] libnm: fix memleak in NMDeviceVxlan --- libnm/nm-device-vxlan.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libnm/nm-device-vxlan.c b/libnm/nm-device-vxlan.c index 86b5fca8e7..eaf37cc075 100644 --- a/libnm/nm-device-vxlan.c +++ b/libnm/nm-device-vxlan.c @@ -458,6 +458,8 @@ finalize (GObject *object) g_free (priv->hw_address); g_clear_object (&priv->parent); + g_free (priv->group); + g_free (priv->local); G_OBJECT_CLASS (nm_device_vxlan_parent_class)->finalize (object); } From c4198d45e3cd4b3896a80db6cd0ec2cd161aa28f Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 12 Oct 2016 19:47:38 +0200 Subject: [PATCH 4/6] libnm: avoid possibly NULL address for NMDeviceVlan calling nm_utils_hwaddr_matches() --- libnm/nm-device-vlan.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libnm/nm-device-vlan.c b/libnm/nm-device-vlan.c index 7083b24484..24fcd07919 100644 --- a/libnm/nm-device-vlan.c +++ b/libnm/nm-device-vlan.c @@ -116,6 +116,7 @@ nm_device_vlan_get_vlan_id (NMDeviceVlan *device) static gboolean connection_compatible (NMDevice *device, NMConnection *connection, GError **error) { + NMDeviceVlanPrivate *priv; NMSettingVlan *s_vlan; NMSettingWired *s_wired; const char *setting_hwaddr; @@ -142,8 +143,10 @@ connection_compatible (NMDevice *device, NMConnection *connection, GError **erro else setting_hwaddr = NULL; if (setting_hwaddr) { - if (!nm_utils_hwaddr_matches (setting_hwaddr, -1, - NM_DEVICE_VLAN_GET_PRIVATE (device)->hw_address, -1)) { + priv = NM_DEVICE_VLAN_GET_PRIVATE (device); + if ( !priv->hw_address + || !nm_utils_hwaddr_matches (setting_hwaddr, -1, + priv->hw_address, -1)) { g_set_error_literal (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_INCOMPATIBLE_CONNECTION, _("The hardware address of the device and the connection didn't match.")); } From 21d7aa92044b458028e1968cd09ec015edf977ec Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 12 Oct 2016 19:49:46 +0200 Subject: [PATCH 5/6] libnm: minor refactoring by using g_clear_object() and nm_str_not_empty() --- libnm/nm-device-wifi.c | 13 +++---------- libnm/nm-device.c | 9 +-------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/libnm/nm-device-wifi.c b/libnm/nm-device-wifi.c index 790ddf4ca6..f0b53f54f1 100644 --- a/libnm/nm-device-wifi.c +++ b/libnm/nm-device-wifi.c @@ -520,10 +520,7 @@ clean_up_aps (NMDeviceWifi *self, gboolean in_dispose) priv = NM_DEVICE_WIFI_GET_PRIVATE (self); - if (priv->active_ap) { - g_object_unref (priv->active_ap); - priv->active_ap = NULL; - } + g_clear_object (&priv->active_ap); aps = priv->aps; @@ -722,10 +719,7 @@ state_changed_cb (NMDevice *device, GParamSpec *pspec, gpointer user_data) case NM_DEVICE_STATE_DISCONNECTED: case NM_DEVICE_STATE_FAILED: /* Just clear active AP; don't clear the AP list unless wireless is disabled completely */ - if (priv->active_ap) { - g_object_unref (priv->active_ap); - priv->active_ap = NULL; - } + g_clear_object (&priv->active_ap); _nm_object_queue_notify (NM_OBJECT (device), NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT); priv->rate = 0; _nm_object_queue_notify (NM_OBJECT (device), NM_DEVICE_WIFI_BITRATE); @@ -764,8 +758,7 @@ access_point_removed (NMDeviceWifi *self, NMAccessPoint *ap) NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); if (ap == priv->active_ap) { - g_object_unref (priv->active_ap); - priv->active_ap = NULL; + g_clear_object (&priv->active_ap); _nm_object_queue_notify (NM_OBJECT (self), NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT); priv->rate = 0; diff --git a/libnm/nm-device.c b/libnm/nm-device.c index b3dc01b20f..58d0f5fbc7 100644 --- a/libnm/nm-device.c +++ b/libnm/nm-device.c @@ -2084,16 +2084,9 @@ done: const char * nm_device_get_physical_port_id (NMDevice *device) { - NMDevicePrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - - if (priv->physical_port_id && *priv->physical_port_id) - return priv->physical_port_id; - else - return NULL; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->physical_port_id); } /** From 95ab69b761293993c27d64137b9c5163d4773de0 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 12 Oct 2016 19:50:32 +0200 Subject: [PATCH 6/6] libnm: coerce empty strings to NULL for D-Bus properties On D-Bus level, string (s) or object paths (o) cannot be NULL. Thus, whenver server exposes such an object, it gets automatically coerced to "" or "/", respectively. On client side, libnm should coerce certain properties back, for which "" is just not a sensible value. For example, an empty NM_DEVICE_ETHERNET_HW_ADDRESS should be instead exposed as NULL. Technically, this is an API change. However, all users were well advised to expect both NULL and "" as possible return values and handle them accordingly. --- libnm/nm-access-point.c | 2 +- libnm/nm-active-connection.c | 11 +++++++---- libnm/nm-device-bond.c | 2 +- libnm/nm-device-bridge.c | 2 +- libnm/nm-device-bt.c | 2 +- libnm/nm-device-ethernet.c | 4 ++-- libnm/nm-device-generic.c | 9 +++++---- libnm/nm-device-infiniband.c | 2 +- libnm/nm-device-ip-tunnel.c | 8 ++++---- libnm/nm-device-macvlan.c | 4 ++-- libnm/nm-device-olpc-mesh.c | 2 +- libnm/nm-device-team.c | 4 ++-- libnm/nm-device-tun.c | 4 ++-- libnm/nm-device-vlan.c | 2 +- libnm/nm-device-vxlan.c | 6 +++--- libnm/nm-device-wifi.c | 4 ++-- libnm/nm-device-wimax.c | 4 ++-- libnm/nm-device.c | 16 ++++++++-------- libnm/nm-ip-config.c | 2 +- libnm/nm-manager.c | 2 +- libnm/nm-vpn-connection.c | 2 +- 21 files changed, 49 insertions(+), 45 deletions(-) diff --git a/libnm/nm-access-point.c b/libnm/nm-access-point.c index 67b8550603..d9b1c502ef 100644 --- a/libnm/nm-access-point.c +++ b/libnm/nm-access-point.c @@ -170,7 +170,7 @@ nm_access_point_get_bssid (NMAccessPoint *ap) { g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NULL); - return NM_ACCESS_POINT_GET_PRIVATE (ap)->bssid; + return nm_str_not_empty (NM_ACCESS_POINT_GET_PRIVATE (ap)->bssid); } /** diff --git a/libnm/nm-active-connection.c b/libnm/nm-active-connection.c index a1636598ac..2f04eff095 100644 --- a/libnm/nm-active-connection.c +++ b/libnm/nm-active-connection.c @@ -129,7 +129,7 @@ nm_active_connection_get_id (NMActiveConnection *connection) { g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->id; + return nm_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->id); } /** @@ -146,7 +146,7 @@ nm_active_connection_get_uuid (NMActiveConnection *connection) { g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->uuid; + return nm_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->uuid); } /** @@ -163,7 +163,7 @@ nm_active_connection_get_connection_type (NMActiveConnection *connection) { g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->type; + return nm_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->type); } /** @@ -461,6 +461,7 @@ get_property (GObject *object, static gboolean demarshal_specific_object_path (NMObject *object, GParamSpec *pspec, GVariant *value, gpointer field) { + const char *v; char **param = (char **) field; /* We have to demarshal this manually, because the D-Bus property name @@ -471,8 +472,10 @@ demarshal_specific_object_path (NMObject *object, GParamSpec *pspec, GVariant *v if (!g_variant_is_of_type (value, G_VARIANT_TYPE_OBJECT_PATH)) return FALSE; + v = g_variant_get_string (value, NULL); + g_free (*param); - *param = g_variant_dup_string (value, NULL); + *param = nm_streq0 (v, "/") ? NULL : g_strdup (v); return TRUE; } diff --git a/libnm/nm-device-bond.c b/libnm/nm-device-bond.c index e5977c6664..0a9fae86a2 100644 --- a/libnm/nm-device-bond.c +++ b/libnm/nm-device-bond.c @@ -64,7 +64,7 @@ nm_device_bond_get_hw_address (NMDeviceBond *device) { g_return_val_if_fail (NM_IS_DEVICE_BOND (device), NULL); - return NM_DEVICE_BOND_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_BOND_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-bridge.c b/libnm/nm-device-bridge.c index 83ad963410..cd885b4afb 100644 --- a/libnm/nm-device-bridge.c +++ b/libnm/nm-device-bridge.c @@ -64,7 +64,7 @@ nm_device_bridge_get_hw_address (NMDeviceBridge *device) { g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), NULL); - return NM_DEVICE_BRIDGE_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_BRIDGE_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-bt.c b/libnm/nm-device-bt.c index 2c039d941e..f41b7abd8c 100644 --- a/libnm/nm-device-bt.c +++ b/libnm/nm-device-bt.c @@ -65,7 +65,7 @@ nm_device_bt_get_hw_address (NMDeviceBt *device) { g_return_val_if_fail (NM_IS_DEVICE_BT (device), NULL); - return NM_DEVICE_BT_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_BT_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-ethernet.c b/libnm/nm-device-ethernet.c index 15ca0257e6..966ad2d73e 100644 --- a/libnm/nm-device-ethernet.c +++ b/libnm/nm-device-ethernet.c @@ -69,7 +69,7 @@ nm_device_ethernet_get_hw_address (NMDeviceEthernet *device) { g_return_val_if_fail (NM_IS_DEVICE_ETHERNET (device), NULL); - return NM_DEVICE_ETHERNET_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_ETHERNET_GET_PRIVATE (device)->hw_address); } /** @@ -86,7 +86,7 @@ nm_device_ethernet_get_permanent_hw_address (NMDeviceEthernet *device) { g_return_val_if_fail (NM_IS_DEVICE_ETHERNET (device), NULL); - return NM_DEVICE_ETHERNET_GET_PRIVATE (device)->perm_hw_address; + return nm_str_not_empty (NM_DEVICE_ETHERNET_GET_PRIVATE (device)->perm_hw_address); } /** diff --git a/libnm/nm-device-generic.c b/libnm/nm-device-generic.c index 9dd1c945ec..6bc1336219 100644 --- a/libnm/nm-device-generic.c +++ b/libnm/nm-device-generic.c @@ -59,7 +59,7 @@ nm_device_generic_get_hw_address (NMDeviceGeneric *device) { g_return_val_if_fail (NM_IS_DEVICE_GENERIC (device), NULL); - return NM_DEVICE_GENERIC_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_GENERIC_GET_PRIVATE (device)->hw_address); } /*****************************************************************************/ @@ -69,7 +69,7 @@ get_type_description (NMDevice *device) { NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (device); - return priv->type_description; + return nm_str_not_empty (priv->type_description); } static const char * @@ -150,14 +150,15 @@ get_property (GObject *object, GValue *value, GParamSpec *pspec) { - NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (object); + NMDeviceGeneric *self = NM_DEVICE_GENERIC (object); + NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (self); switch (prop_id) { case PROP_HW_ADDRESS: g_value_set_string (value, priv->hw_address); break; case PROP_TYPE_DESCRIPTION: - g_value_set_string (value, priv->type_description); + g_value_set_string (value, get_type_description ((NMDevice *) self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); diff --git a/libnm/nm-device-infiniband.c b/libnm/nm-device-infiniband.c index 0f92f8304b..665542881e 100644 --- a/libnm/nm-device-infiniband.c +++ b/libnm/nm-device-infiniband.c @@ -61,7 +61,7 @@ nm_device_infiniband_get_hw_address (NMDeviceInfiniband *device) { g_return_val_if_fail (NM_IS_DEVICE_INFINIBAND (device), NULL); - return NM_DEVICE_INFINIBAND_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_INFINIBAND_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-ip-tunnel.c b/libnm/nm-device-ip-tunnel.c index 6410c48c4d..41748aba10 100644 --- a/libnm/nm-device-ip-tunnel.c +++ b/libnm/nm-device-ip-tunnel.c @@ -111,7 +111,7 @@ nm_device_ip_tunnel_get_local (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->local; + return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->local); } /** @@ -127,7 +127,7 @@ nm_device_ip_tunnel_get_remote (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->remote; + return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->remote); } /** @@ -192,7 +192,7 @@ nm_device_ip_tunnel_get_input_key (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->input_key; + return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->input_key); } /** @@ -208,7 +208,7 @@ nm_device_ip_tunnel_get_output_key (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->output_key; + return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->output_key); } /** diff --git a/libnm/nm-device-macvlan.c b/libnm/nm-device-macvlan.c index 610bdc35f2..a370ed1e67 100644 --- a/libnm/nm-device-macvlan.c +++ b/libnm/nm-device-macvlan.c @@ -86,7 +86,7 @@ nm_device_macvlan_get_mode (NMDeviceMacvlan *device) { g_return_val_if_fail (NM_IS_DEVICE_MACVLAN (device), NULL); - return NM_DEVICE_MACVLAN_GET_PRIVATE (device)->mode; + return nm_str_not_empty (NM_DEVICE_MACVLAN_GET_PRIVATE (device)->mode); } /** @@ -141,7 +141,7 @@ nm_device_macvlan_get_hw_address (NMDeviceMacvlan *device) { g_return_val_if_fail (NM_IS_DEVICE_MACVLAN (device), NULL); - return NM_DEVICE_MACVLAN_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_MACVLAN_GET_PRIVATE (device)->hw_address); } diff --git a/libnm/nm-device-olpc-mesh.c b/libnm/nm-device-olpc-mesh.c index a11050f5b4..c69d0b3748 100644 --- a/libnm/nm-device-olpc-mesh.c +++ b/libnm/nm-device-olpc-mesh.c @@ -63,7 +63,7 @@ nm_device_olpc_mesh_get_hw_address (NMDeviceOlpcMesh *device) { g_return_val_if_fail (NM_IS_DEVICE_OLPC_MESH (device), NULL); - return NM_DEVICE_OLPC_MESH_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_OLPC_MESH_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-team.c b/libnm/nm-device-team.c index 8179bd52f4..0c5383deea 100644 --- a/libnm/nm-device-team.c +++ b/libnm/nm-device-team.c @@ -66,7 +66,7 @@ nm_device_team_get_hw_address (NMDeviceTeam *device) { g_return_val_if_fail (NM_IS_DEVICE_TEAM (device), NULL); - return NM_DEVICE_TEAM_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_TEAM_GET_PRIVATE (device)->hw_address); } /** @@ -119,7 +119,7 @@ nm_device_team_get_config (NMDeviceTeam *device) { g_return_val_if_fail (NM_IS_DEVICE_TEAM (device), NULL); - return NM_DEVICE_TEAM_GET_PRIVATE (device)->config; + return nm_str_not_empty (NM_DEVICE_TEAM_GET_PRIVATE (device)->config); } static const char * diff --git a/libnm/nm-device-tun.c b/libnm/nm-device-tun.c index e4e412f8fe..52ba8fd7da 100644 --- a/libnm/nm-device-tun.c +++ b/libnm/nm-device-tun.c @@ -74,7 +74,7 @@ nm_device_tun_get_hw_address (NMDeviceTun *device) { g_return_val_if_fail (NM_IS_DEVICE_TUN (device), NULL); - return NM_DEVICE_TUN_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_TUN_GET_PRIVATE (device)->hw_address); } /** @@ -92,7 +92,7 @@ nm_device_tun_get_mode (NMDeviceTun *device) { g_return_val_if_fail (NM_IS_DEVICE_TUN (device), NULL); - return NM_DEVICE_TUN_GET_PRIVATE (device)->mode; + return nm_str_not_empty (NM_DEVICE_TUN_GET_PRIVATE (device)->mode); } /** diff --git a/libnm/nm-device-vlan.c b/libnm/nm-device-vlan.c index 24fcd07919..b67ad373ca 100644 --- a/libnm/nm-device-vlan.c +++ b/libnm/nm-device-vlan.c @@ -66,7 +66,7 @@ nm_device_vlan_get_hw_address (NMDeviceVlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VLAN (device), NULL); - return NM_DEVICE_VLAN_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_VLAN_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-vxlan.c b/libnm/nm-device-vxlan.c index eaf37cc075..ee356749da 100644 --- a/libnm/nm-device-vxlan.c +++ b/libnm/nm-device-vxlan.c @@ -95,7 +95,7 @@ nm_device_vxlan_get_hw_address (NMDeviceVxlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VXLAN (device), NULL); - return NM_DEVICE_VXLAN_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->hw_address); } /** @@ -162,7 +162,7 @@ nm_device_vxlan_get_group (NMDeviceVxlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VXLAN (device), NULL); - return NM_DEVICE_VXLAN_GET_PRIVATE (device)->group; + return nm_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->group); } /** @@ -178,7 +178,7 @@ nm_device_vxlan_get_local (NMDeviceVxlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VXLAN (device), NULL); - return NM_DEVICE_VXLAN_GET_PRIVATE (device)->local; + return nm_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->local); } /** diff --git a/libnm/nm-device-wifi.c b/libnm/nm-device-wifi.c index f0b53f54f1..f705dbd2ea 100644 --- a/libnm/nm-device-wifi.c +++ b/libnm/nm-device-wifi.c @@ -100,7 +100,7 @@ nm_device_wifi_get_hw_address (NMDeviceWifi *device) { g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL); - return NM_DEVICE_WIFI_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_WIFI_GET_PRIVATE (device)->hw_address); } /** @@ -117,7 +117,7 @@ nm_device_wifi_get_permanent_hw_address (NMDeviceWifi *device) { g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL); - return NM_DEVICE_WIFI_GET_PRIVATE (device)->perm_hw_address; + return nm_str_not_empty (NM_DEVICE_WIFI_GET_PRIVATE (device)->perm_hw_address); } /** diff --git a/libnm/nm-device-wimax.c b/libnm/nm-device-wimax.c index e14925f778..98c651d3d6 100644 --- a/libnm/nm-device-wimax.c +++ b/libnm/nm-device-wimax.c @@ -91,7 +91,7 @@ nm_device_wimax_get_hw_address (NMDeviceWimax *wimax) { g_return_val_if_fail (NM_IS_DEVICE_WIMAX (wimax), NULL); - return NM_DEVICE_WIMAX_GET_PRIVATE (wimax)->hw_address; + return nm_str_not_empty (NM_DEVICE_WIMAX_GET_PRIVATE (wimax)->hw_address); } /** @@ -300,7 +300,7 @@ nm_device_wimax_get_bsid (NMDeviceWimax *self) { g_return_val_if_fail (NM_IS_DEVICE_WIMAX (self), NULL); - return NM_DEVICE_WIMAX_GET_PRIVATE (self)->bsid; + return nm_str_not_empty (NM_DEVICE_WIMAX_GET_PRIVATE (self)->bsid); } static gboolean diff --git a/libnm/nm-device.c b/libnm/nm-device.c index 58d0f5fbc7..228e60b70b 100644 --- a/libnm/nm-device.c +++ b/libnm/nm-device.c @@ -996,7 +996,7 @@ nm_device_get_iface (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->iface; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->iface); } /** @@ -1014,7 +1014,7 @@ nm_device_get_ip_iface (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->ip_iface; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->ip_iface); } /** @@ -1048,7 +1048,7 @@ nm_device_get_udi (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->udi; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->udi); } /** @@ -1065,7 +1065,7 @@ nm_device_get_driver (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->driver; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->driver); } /** @@ -1082,7 +1082,7 @@ nm_device_get_driver_version (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->driver_version; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->driver_version); } /** @@ -1099,7 +1099,7 @@ nm_device_get_firmware_version (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->firmware_version; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->firmware_version); } /** @@ -1124,7 +1124,7 @@ nm_device_get_type_description (NMDevice *device) g_return_val_if_fail (NM_IS_DEVICE (device), NULL); if (priv->type_description) - return priv->type_description; + return nm_str_not_empty (priv->type_description); if (NM_DEVICE_GET_CLASS (device)->get_type_description) { desc = NM_DEVICE_GET_CLASS (device)->get_type_description (device); @@ -1137,7 +1137,7 @@ nm_device_get_type_description (NMDevice *device) typename += 8; priv->type_description = g_ascii_strdown (typename, -1); - return priv->type_description; + return nm_str_not_empty (priv->type_description); } /** diff --git a/libnm/nm-ip-config.c b/libnm/nm-ip-config.c index 97fb0aa926..74db9994f3 100644 --- a/libnm/nm-ip-config.c +++ b/libnm/nm-ip-config.c @@ -395,7 +395,7 @@ nm_ip_config_get_gateway (NMIPConfig *config) { g_return_val_if_fail (NM_IS_IP_CONFIG (config), NULL); - return NM_IP_CONFIG_GET_PRIVATE (config)->gateway; + return nm_str_not_empty (NM_IP_CONFIG_GET_PRIVATE (config)->gateway); } /** diff --git a/libnm/nm-manager.c b/libnm/nm-manager.c index 01ed4fa50a..e490104803 100644 --- a/libnm/nm-manager.c +++ b/libnm/nm-manager.c @@ -382,7 +382,7 @@ nm_manager_get_version (NMManager *manager) { g_return_val_if_fail (NM_IS_MANAGER (manager), NULL); - return NM_MANAGER_GET_PRIVATE (manager)->version; + return nm_str_not_empty (NM_MANAGER_GET_PRIVATE (manager)->version); } NMState diff --git a/libnm/nm-vpn-connection.c b/libnm/nm-vpn-connection.c index 4b96210b46..5780fb3a78 100644 --- a/libnm/nm-vpn-connection.c +++ b/libnm/nm-vpn-connection.c @@ -79,7 +79,7 @@ nm_vpn_connection_get_banner (NMVpnConnection *vpn) if (priv->vpn_state != NM_VPN_CONNECTION_STATE_ACTIVATED) return NULL; - return priv->banner; + return nm_str_not_empty (priv->banner); } /**