Blob Blame History Raw
From 5b280e46029f1d857fb69ccc0db2e63b8a0e3c82 Mon Sep 17 00:00:00 2001
From: Ana Cabral <acabral@redhat.com>
Date: Mon, 21 Feb 2022 21:49:29 +0100
Subject: [PATCH] network: Fix OWE settings

Enhanced Open (OWE) is not being saved properly from connection-editor.
When we create a Wi-Fi connection using Enhanced Open (OWE) Security
from nm-connection-editor and save it, it was not being saved and the
security was being set as "None", with Wireless Security Setting
being discarded. This is fixed by this commit. The fix is also being
done in libnma (implementing OWE in libnma,
https://gitlab.gnome.org/GNOME/libnma/-/issues/9), but this commit
fixes meanwhile it gets ready.

It was solved by adding treatment for the case in which owe was set.
OWE is not treated anymore in the same case as None.

https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1521
---
 .../connection-editor/ce-page-security.c      | 23 +++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/panels/network/connection-editor/ce-page-security.c b/panels/network/connection-editor/ce-page-security.c
index 52efb9da1..ce42be146 100644
--- a/panels/network/connection-editor/ce-page-security.c
+++ b/panels/network/connection-editor/ce-page-security.c
@@ -435,10 +435,25 @@ validate (CEPage        *page,
 
                 wireless_security_unref (sec);
         } else {
-                /* No security, unencrypted */
-                nm_connection_remove_setting (connection, NM_TYPE_SETTING_WIRELESS_SECURITY);
-                nm_connection_remove_setting (connection, NM_TYPE_SETTING_802_1X);
-                valid = TRUE;
+
+    		if (gtk_combo_box_get_active ((CE_PAGE_SECURITY (page))->security_combo) == 0) {
+    			/* No security, unencrypted */
+    			nm_connection_remove_setting (connection, NM_TYPE_SETTING_WIRELESS_SECURITY);
+    			nm_connection_remove_setting (connection, NM_TYPE_SETTING_802_1X);
+    			valid = TRUE;
+    		} else {
+    			/* owe case:
+    			 * fill the connection manually until libnma implements OWE wireless security
+    			 */
+    			NMSetting *sws;
+
+    			sws = nm_setting_wireless_security_new ();
+    			g_object_set (sws, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "owe", NULL);
+    			nm_connection_add_setting (connection, sws);
+    			nm_connection_remove_setting (connection, NM_TYPE_SETTING_802_1X);
+    			valid = TRUE;
+    		}
+
         }
 
         return valid;
-- 
2.35.1