summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-09-30 11:42:51 +0200
committerThomas Haller <thaller@redhat.com>2014-09-30 12:02:15 +0200
commit31daa2cfbd0abbc81ac6f9b1a4196085ae428e9b (patch)
treea84959065a421d2955ed0c41c1e363582fff7104
parentd8541d17be028cbd9dc29b962a854ca3b69dfa3c (diff)
core: fix assertion when comparing missing hwaddr while searching connection for device
A device (e.g. of type tun) might not have a hwaddr. Avoid the assertion in nm_utils_hwaddr_matches(). Backtrace: #0 0x00007fd0920444e9 in g_logv (log_domain=0x5a5be3 "libnm", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7fff2551e590) at gmessages.c:989 #1 0x00007fd09204463f in g_log (log_domain=<optimized out>, log_level=<optimized out>, format=<optimized out>) at gmessages.c:1025 #2 0x0000000000555d31 in nm_utils_hwaddr_matches (hwaddr1=0x7fff2551e6a0, hwaddr1_len=6, hwaddr2=0x0, hwaddr2_len=-1) at ../libnm-core/nm-utils.c:2414 #3 0x000000000049e7a0 in have_connection_for_device (self=0x7fd084008710, device=0x168e5c0) at settings/nm-settings.c:1513 #4 0x000000000049e23d in nm_settings_device_added (self=0x7fd084008710, device=0x168e5c0) at settings/nm-settings.c:1599 #5 0x00000000004e6447 in add_device (self=0x1654150, device=0x168e5c0, try_assume=1) at nm-manager.c:1840 #6 0x00000000004e8fb6 in platform_link_added (self=0x1654150, ifindex=6, plink=0x165c328, reason=NM_PLATFORM_REASON_INTERNAL) at nm-manager.c:2163 #7 0x00000000004e3252 in platform_link_cb (platform=0x15b1870, ifindex=6, plink=0x165c328, change_type=NM_PLATFORM_SIGNAL_ADDED, reason=NM_PLATFORM_REASON_INTERNAL, user_data=0x1654150) at nm-manager.c:2178 #8 0x000000381dc05d8c in ffi_call_unix64 () at ../src/x86/unix64.S:76 #9 0x000000381dc056bc in ffi_call (cif=cif@entry=0x7fff2551ed00, fn=0x4e31e0 <platform_link_cb>, rvalue=0x7fff2551ec70, avalue=avalue@entry=0x7fff2551ebf0) at ../src/x86/ffi64.c:522 #10 0x00007fd092331ad8 in g_cclosure_marshal_generic (closure=0x1607710, return_gvalue=0x0, n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=<optimized out>, marshal_data=0x0) at gclosure.c:1454 #11 0x00007fd092331298 in g_closure_invoke (closure=0x1607710, return_value=return_value@entry=0x0, n_param_values=5, param_values=param_values@entry=0x7fff2551ef00, invocation_hint=invocation_hint@entry=0x7fff2551eea0) at gclosure.c:777 #12 0x00007fd09234335d in signal_emit_unlocked_R (node=node@entry=0x15b03a0, detail=detail@entry=0, instance=instance@entry=0x15b1870, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fff2551ef00) at gsignal.c:3586 #13 0x00007fd09234b0f2 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fff2551f0e0) at gsignal.c:3330 #14 0x00007fd09234b3af in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3386 #15 0x000000000048353d in nm_platform_query_devices () at platform/nm-platform.c:345 #16 0x00000000004e12d2 in nm_manager_start (self=0x1654150) at nm-manager.c:4170 #17 0x000000000044349a in main (argc=1, argv=0x7fff2551f938) at main.c:661 Fixes: b019348fdde223f39c91150e6b7a11e366fade63 Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r--src/settings/nm-settings.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c
index 65bc241e48..096608ce05 100644
--- a/src/settings/nm-settings.c
+++ b/src/settings/nm-settings.c
@@ -1510,7 +1510,8 @@ have_connection_for_device (NMSettings *self, NMDevice *device)
setting_hwaddr = nm_setting_wired_get_mac_address (s_wired);
if (setting_hwaddr) {
/* A connection mac-locked to this device */
- if (nm_utils_hwaddr_matches (setting_hwaddr, -1, device_hwaddr, -1))
+ if ( device_hwaddr
+ && nm_utils_hwaddr_matches (setting_hwaddr, -1, device_hwaddr, -1))
return TRUE;
} else {
/* A connection that applies to any wired device */