mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-07 18:58:05 +02:00
core: don't crash when a wired device doesn't have a driver (rh #492246)
Virtual interfaces like Cisco VPN and VMWare net driver don't have 'driver' links in sysfs (since they don't really have subsystems).
This commit is contained in:
parent
b724b1820d
commit
b8fc83a7cf
1 changed files with 15 additions and 7 deletions
|
|
@ -129,9 +129,13 @@ nm_get_device_driver_name (LibHalContext *ctx, const char *origdev_udi)
|
||||||
char *driver_name = NULL;
|
char *driver_name = NULL;
|
||||||
|
|
||||||
if (origdev_udi && libhal_device_property_exists (ctx, origdev_udi, "info.linux.driver", NULL)) {
|
if (origdev_udi && libhal_device_property_exists (ctx, origdev_udi, "info.linux.driver", NULL)) {
|
||||||
char *drv = libhal_device_get_property_string (ctx, origdev_udi, "info.linux.driver", NULL);
|
char *drv;
|
||||||
driver_name = g_strdup (drv);
|
|
||||||
libhal_free_string (drv);
|
drv = libhal_device_get_property_string (ctx, origdev_udi, "info.linux.driver", NULL);
|
||||||
|
if (drv) {
|
||||||
|
driver_name = g_strdup (drv);
|
||||||
|
libhal_free_string (drv);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return driver_name;
|
return driver_name;
|
||||||
}
|
}
|
||||||
|
|
@ -204,7 +208,7 @@ wired_device_creator (NMHalManager *self,
|
||||||
/* Special handling of Ericsson F3507g 'mbm' devices; ignore the
|
/* Special handling of Ericsson F3507g 'mbm' devices; ignore the
|
||||||
* cdc-ether device that it provides since we don't use it yet.
|
* cdc-ether device that it provides since we don't use it yet.
|
||||||
*/
|
*/
|
||||||
if (!strcmp (driver, "cdc_ether")) {
|
if (driver && !strcmp (driver, "cdc_ether")) {
|
||||||
parent = is_mbm (priv->hal_ctx, udi);
|
parent = is_mbm (priv->hal_ctx, udi);
|
||||||
mbm = !!parent;
|
mbm = !!parent;
|
||||||
libhal_free_string (parent);
|
libhal_free_string (parent);
|
||||||
|
|
@ -823,9 +827,13 @@ nm_get_modem_device_driver_name (LibHalContext *ctx, const char *udi)
|
||||||
origdev_udi = libhal_device_get_property_string (ctx, udi, "serial.physical_device", NULL);
|
origdev_udi = libhal_device_get_property_string (ctx, udi, "serial.physical_device", NULL);
|
||||||
|
|
||||||
if (origdev_udi && libhal_device_property_exists (ctx, origdev_udi, "info.linux.driver", NULL)) {
|
if (origdev_udi && libhal_device_property_exists (ctx, origdev_udi, "info.linux.driver", NULL)) {
|
||||||
char *drv = libhal_device_get_property_string (ctx, origdev_udi, "info.linux.driver", NULL);
|
char *drv;
|
||||||
driver_name = g_strdup (drv);
|
|
||||||
libhal_free_string (drv);
|
drv = libhal_device_get_property_string (ctx, origdev_udi, "info.linux.driver", NULL);
|
||||||
|
if (drv) {
|
||||||
|
driver_name = g_strdup (drv);
|
||||||
|
libhal_free_string (drv);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
libhal_free_string (origdev_udi);
|
libhal_free_string (origdev_udi);
|
||||||
return driver_name;
|
return driver_name;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue