Blame SOURCES/0008-network-Fix-saving-passwords-for-non-wifi-connection.patch

1aae59
From 4269c292020aa11d7b8e17e804ad207e892d2bfe Mon Sep 17 00:00:00 2001
1aae59
From: Benjamin Berg <bberg@redhat.com>
1aae59
Date: Thu, 9 Dec 2021 17:53:09 +0100
1aae59
Subject: [PATCH 8/8] network: Fix saving passwords for non-wifi connections
1aae59
1aae59
When validating security settings for non-wifi connections, we
1aae59
temporarily create a wireless connection. Unfortunately, when this
1aae59
connection is destroyed, it'll clear the stored password from the 802.1x
1aae59
settings object.
1aae59
1aae59
Avoid this by removing the setting before unref'ing the temporary
1aae59
connection.
1aae59
---
1aae59
 .../connection-editor/ce-page-8021x-security.c    | 15 +++++----------
1aae59
 1 file changed, 5 insertions(+), 10 deletions(-)
1aae59
1aae59
diff --git a/panels/network/connection-editor/ce-page-8021x-security.c b/panels/network/connection-editor/ce-page-8021x-security.c
1aae59
index f7d31969a..0ac057f79 100644
1aae59
--- a/panels/network/connection-editor/ce-page-8021x-security.c
1aae59
+++ b/panels/network/connection-editor/ce-page-8021x-security.c
1aae59
@@ -126,22 +126,17 @@ validate (CEPage *cepage, NMConnection *connection, GError **error)
1aae59
 		/* FIXME: get failed property and error out of wireless security objects */
1aae59
 		valid = wireless_security_validate (page->security, error);
1aae59
 		if (valid) {
1aae59
-			NMSetting *s_con;
1aae59
-
1aae59
 			/* Here's a nice hack to work around the fact that ws_802_1x_fill_connection needs wireless setting. */
1aae59
-			tmp_connection = nm_simple_connection_new ();
1aae59
+			tmp_connection = nm_simple_connection_new_clone (connection);
1aae59
 			nm_connection_add_setting (tmp_connection, nm_setting_wireless_new ());
1aae59
 
1aae59
-			/* temp connection needs a 'connection' setting too, since most of
1aae59
-			 * the EAP methods need the UUID for CA cert ignore stuff.
1aae59
-			 */
1aae59
-			s_con = nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION);
1aae59
-			nm_connection_add_setting (tmp_connection, nm_setting_duplicate (s_con));
1aae59
-
1aae59
 			ws_802_1x_fill_connection (page->security, "wpa_eap_auth_combo", tmp_connection);
1aae59
 
1aae59
+			/* NOTE: It is important we create a copy of the settings, as the
1aae59
+			 * secrets might be cleared otherwise.
1aae59
+			 */
1aae59
 			s_8021x = nm_connection_get_setting (tmp_connection, NM_TYPE_SETTING_802_1X);
1aae59
-			nm_connection_add_setting (connection, NM_SETTING (g_object_ref (s_8021x)));
1aae59
+			nm_connection_add_setting (connection, nm_setting_duplicate (NM_SETTING (s_8021x)));
1aae59
 
1aae59
 			g_object_unref (tmp_connection);
1aae59
 		}
1aae59
-- 
1aae59
2.34.1
1aae59