From 8ddc6caf98e2c4f1e796f50cdbeee567aba9be9d Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Wed, 20 Dec 2017 13:53:56 +0100 Subject: [PATCH] wwan: fix checks on IP configuration Don't call nm_utils_parse_inaddr_bin() if the string returned by mm_bearer_ip_config_get_address() and mm_bearer_ip_config_get_gateway() is NULL, as the function requires a valid pointer. Throw an error if the address is NULL, but allow an empty gateway. Fixes: 7837afe87f0f269c0cc4de1c9c217529d760e83b --- src/devices/wwan/nm-modem-broadband.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/devices/wwan/nm-modem-broadband.c b/src/devices/wwan/nm-modem-broadband.c index 6e5f10a062..9fc147da93 100644 --- a/src/devices/wwan/nm-modem-broadband.c +++ b/src/devices/wwan/nm-modem-broadband.c @@ -883,24 +883,25 @@ static_stage3_ip4_done (NMModemBroadband *self) /* Fully fail if invalid IP address retrieved */ address_string = mm_bearer_ip_config_get_address (self->_priv.ipv4_config); - if (!nm_utils_parse_inaddr_bin (AF_INET, address_string, &address_network)) { + if ( !address_string + || !nm_utils_parse_inaddr_bin (AF_INET, address_string, &address_network)) { error = g_error_new (NM_DEVICE_ERROR, NM_DEVICE_ERROR_INVALID_CONNECTION, - "(%s) retrieving IP4 configuration failed: invalid address given '%s'", + "(%s) retrieving IP4 configuration failed: invalid address given %s%s%s", nm_modem_get_uid (NM_MODEM (self)), - address_string); + NM_PRINT_FMT_QUOTE_STRING (address_string)); goto out; } /* Missing gateway not a hard failure */ gw_string = mm_bearer_ip_config_get_gateway (self->_priv.ipv4_config); - if ( !gw_string - || !nm_utils_parse_inaddr_bin (AF_INET, gw_string, &gw)) { + if ( gw_string + && !nm_utils_parse_inaddr_bin (AF_INET, gw_string, &gw)) { error = g_error_new (NM_DEVICE_ERROR, NM_DEVICE_ERROR_INVALID_CONNECTION, - "(%s) retrieving IP4 configuration failed: invalid gateway address %s%s%s", + "(%s) retrieving IP4 configuration failed: invalid gateway address \"%s\"", nm_modem_get_uid (NM_MODEM (self)), - NM_PRINT_FMT_QUOTE_STRING (gw_string)); + gw_string); goto out; }