summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-03-14 08:19:47 +0100
committerThomas Haller <thaller@redhat.com>2018-03-20 15:08:18 +0100
commit14adbc692a8840dab0f87851fdbfaacef7bb1a36 (patch)
tree13328bc585c1c3734ccb8fc58d67352506083329
parentaf97b9a41e422524e69adf751caadef53104c07b (diff)
downloadNetworkManager-14adbc692a8840dab0f87851fdbfaacef7bb1a36.tar.gz
ofono: fix crash during complete-connection for Ofono modem
nm_modem_complete_connection() cannot just return FALSE in case the modem doesn't overwrite complete_connection(). It must set the error variable. This leads to a crash when calling AddAndActivate for Ofono type modem. It does not affect the ModemManager implementation NMModemBroadband, because that one implements the method.
-rw-r--r--src/devices/wwan/nm-modem.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/devices/wwan/nm-modem.c b/src/devices/wwan/nm-modem.c
index 85f6eb039e..7dcbec1b41 100644
--- a/src/devices/wwan/nm-modem.c
+++ b/src/devices/wwan/nm-modem.c
@@ -1094,9 +1094,17 @@ nm_modem_complete_connection (NMModem *self,
const GSList *existing_connections,
GError **error)
{
- if (NM_MODEM_GET_CLASS (self)->complete_connection)
- return NM_MODEM_GET_CLASS (self)->complete_connection (self, connection, existing_connections, error);
- return FALSE;
+ NMModemClass *klass;
+
+ klass = NM_MODEM_GET_CLASS (self);
+ if (!klass->complete_connection) {
+ g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_INVALID_CONNECTION,
+ "Modem class %s had no complete_connection method",
+ G_OBJECT_TYPE_NAME (self));
+ return FALSE;
+ }
+
+ return klass->complete_connection (self, connection, existing_connections, error);
}
/*****************************************************************************/