mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-28 23:50:10 +01:00
core: fix crash when reloading global dns configuration
When reloading the configuration and there is a global DNS configuration without domains, NM crashes in global_dns_equal() because `old->domains` and `new->domains` are both NULL. Fix that. Thread 1 "NetworkManager" received signal SIGTRAP, Trace/breakpoint trap. 0 g_logv (log_domain=0x7fe81a2110be "GLib", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../glib/gmessages.c:1433 1 g_log (log_domain=<optimized out>, log_level=<optimized out>, format=<optimized out>) at ../glib/gmessages.c:1471 2 g_hash_table_size (hash_table=<optimized out>) at ../glib/ghash.c:2183 3 g_hash_table_size (hash_table=<optimized out>) at ../glib/ghash.c:2181 4 global_dns_equal (new=0xecc540, old=0xe618e0) at ../src/core/nm-config-data.c:1466 5 nm_config_data_diff (old_data=old_data@entry=0xe60020, new_data=new_data@entry=0xe606a0) at ../src/core/nm-config-data.c:1946 6 _set_config_data (self=0xe45810, new_data=0xe606a0, reload_flags=NM_CONFIG_CHANGE_CAUSE_SIGHUP) at ../src/core/nm-config.c:2923 7 nm_config_reload (self=0xe45810, reload_flags=NM_CONFIG_CHANGE_CAUSE_SIGHUP, emit_warnings=emit_warnings@entry=1) at ../src/core/nm-config.c:2875 8 nm_main_config_reload (signal=<optimized out>) at ../src/core/main.c:141 9 sighup_handler (user_data=<optimized out>) at ../src/core/main-utils.c:26 10 g_main_dispatch (context=0xe619e0) at ../glib/gmain.c:3444 11 g_main_context_dispatch (context=0xe619e0) at ../glib/gmain.c:4162 12 g_main_context_iterate.constprop.0 (context=0xe619e0, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4238 13 g_main_loop_run (loop=0xe5e310) at ../glib/gmain.c:4438 14 main (argc=<optimized out>, argv=<optimized out>) at ../src/core/main.c:515 Fixes:1f0d1d78d2('dns-manager: always apply options from [global-dns]') (cherry picked from commitba4a9ea79a)
This commit is contained in:
parent
c543c7f9d7
commit
fb4de0013a
1 changed files with 13 additions and 11 deletions
|
|
@ -1463,21 +1463,23 @@ global_dns_equal(NMGlobalDnsConfig *old, NMGlobalDnsConfig *new)
|
|||
if ((!old->domains || !new->domains) && old->domains != new->domains)
|
||||
return FALSE;
|
||||
|
||||
if (g_hash_table_size(old->domains) != g_hash_table_size(new->domains))
|
||||
if (nm_g_hash_table_size(old->domains) != nm_g_hash_table_size(new->domains))
|
||||
return FALSE;
|
||||
|
||||
g_hash_table_iter_init(&iter, old->domains);
|
||||
while (g_hash_table_iter_next(&iter, &key, &value_old)) {
|
||||
value_new = g_hash_table_lookup(new->domains, key);
|
||||
if (!value_new)
|
||||
return FALSE;
|
||||
if (old->domains) {
|
||||
g_hash_table_iter_init(&iter, old->domains);
|
||||
while (g_hash_table_iter_next(&iter, &key, &value_old)) {
|
||||
value_new = g_hash_table_lookup(new->domains, key);
|
||||
if (!value_new)
|
||||
return FALSE;
|
||||
|
||||
domain_old = value_old;
|
||||
domain_new = value_new;
|
||||
domain_old = value_old;
|
||||
domain_new = value_new;
|
||||
|
||||
if (!nm_strv_equal(domain_old->options, domain_new->options)
|
||||
|| !nm_strv_equal(domain_old->servers, domain_new->servers))
|
||||
return FALSE;
|
||||
if (!nm_strv_equal(domain_old->options, domain_new->options)
|
||||
|| !nm_strv_equal(domain_old->servers, domain_new->servers))
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue