From 0135f9efd2abdcc3d92329d302fc5340c63cbe23 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 23 Nov 2020 16:04:35 +0100 Subject: [PATCH] core: fix modifying connection during recheck_assume_connection() Since commit d35d3c468a30 ('settings: rework tracking settings connections and settings plugins') must settings connections not be modified. They must be treated immutable and only updated by replacing them with a new variant. There is even an assertion for that. Fix the code that attempts to modify an existing NMConnection. https://bugzilla.redhat.com/show_bug.cgi?id=1900536 Fixes: f2fe6c03ee3f ('manager: don't treat the initramfs-configured DHCP connections as generated') https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/690 (cherry picked from commit eed23269bdf2294a3c419bded6dc5475de19fce9) (cherry picked from commit 9596fd1c7468c5c053e2f2fc7c6c61511da4896d) --- src/nm-manager.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/nm-manager.c b/src/nm-manager.c index 37057f7fe0..a32290e2f1 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -2848,14 +2848,18 @@ recheck_assume_connection (NMManager *self, activation_type_assume = TRUE; if (generated) { + gs_unref_object NMConnection *con2 = NULL; + + con2 = nm_simple_connection_new_clone (nm_settings_connection_get_connection (sett_conn)); + /* Reset the IPv4 setting to empty method=auto, regardless of what assumption guessed. */ - nm_connection_add_setting (nm_settings_connection_get_connection (sett_conn), + nm_connection_add_setting (con2, g_object_new (NM_TYPE_SETTING_IP4_CONFIG, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL)); nm_settings_connection_update (sett_conn, - NULL, + con2, NM_SETTINGS_CONNECTION_PERSIST_MODE_KEEP, NM_SETTINGS_CONNECTION_INT_FLAGS_NONE, NM_SETTINGS_CONNECTION_INT_FLAGS_VOLATILE