core: fix modifying connection during recheck_assume_connection()

Since commit d35d3c468a ('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: f2fe6c03ee ('manager: don't treat the initramfs-configured DHCP connections as generated')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/690
(cherry picked from commit eed23269bd)
(cherry picked from commit 9596fd1c74)
This commit is contained in:
Thomas Haller 2020-11-23 16:04:35 +01:00
parent 805c9fa8d4
commit 0135f9efd2
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -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