summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-11-23 16:04:35 +0100
committerThomas Haller <thaller@redhat.com>2020-11-23 20:58:53 +0100
commit43be97729b826739e58be20028f2526495ccf527 (patch)
tree559c47ebeaa50d9b21949d280a079be74bee1c1b
parentdf76da8ea0d6994b5611c64ca66f7f86d233b541 (diff)
downloadNetworkManager-th/assume-initrd-not-modify-connection.tar.gz
core: fix modifying connection during recheck_assume_connection()th/assume-initrd-not-modify-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')
-rw-r--r--src/nm-manager.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c
index c17c881b68..75117bbc63 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -2879,15 +2879,20 @@ recheck_assume_connection(NMManager *self, NMDevice *device)
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