about summary refs log tree commit diff
path: root/src/libnm-core-impl/nm-connection.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2022-05-04 15:35:24 +0200
committerMichael Biebl <biebl@debian.org>2022-05-04 15:35:24 +0200
commit9959fdb2e8ddd06f2161798ca0a39c77d67c652d (patch)
tree2ce24a336d2b1c5fd5dec3090db312eded6c78ba /src/libnm-core-impl/nm-connection.c
parent8c623dddbdebe354cb94bfc559a5371a14865317 (diff)
New upstream version 1.37.92 upstream/1.37.92
Diffstat (limited to 'src/libnm-core-impl/nm-connection.c')
-rw-r--r--src/libnm-core-impl/nm-connection.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/libnm-core-impl/nm-connection.c b/src/libnm-core-impl/nm-connection.c
index a9b130a7..27cea2cb 100644
--- a/src/libnm-core-impl/nm-connection.c
+++ b/src/libnm-core-impl/nm-connection.c
@@ -1642,6 +1642,66 @@ _normalize_gsm_auto_config(NMConnection *self)
 }
 
 static gboolean
+_normalize_802_1x_empty_strings(NMConnection *self)
+{
+    NMSetting8021x *s_8021x;
+    gboolean        changed = FALSE;
+
+    s_8021x = _connection_get_setting_by_meta_type(NM_CONNECTION_GET_PRIVATE(self),
+                                                   NM_META_SETTING_TYPE_802_1X);
+    if (!s_8021x)
+        return FALSE;
+
+#define _norm_8021x(s_8021x, getter, prop_name, p_changed)       \
+    G_STMT_START                                                 \
+    {                                                            \
+        NMSetting8021x *_s_8021x   = (s_8021x);                  \
+        gboolean       *_p_changed = (p_changed);                \
+        const char     *_v;                                      \
+                                                                 \
+        _v = getter(_s_8021x);                                   \
+        if (_v && _v[0] == '\0') {                               \
+            g_object_set(_s_8021x, "" prop_name "", NULL, NULL); \
+            *(_p_changed) = TRUE;                                \
+        }                                                        \
+    }                                                            \
+    G_STMT_END
+
+    _norm_8021x(s_8021x, nm_setting_802_1x_get_identity, NM_SETTING_802_1X_IDENTITY, &changed);
+    _norm_8021x(s_8021x,
+                nm_setting_802_1x_get_anonymous_identity,
+                NM_SETTING_802_1X_ANONYMOUS_IDENTITY,
+                &changed);
+    _norm_8021x(s_8021x, nm_setting_802_1x_get_pac_file, NM_SETTING_802_1X_PAC_FILE, &changed);
+    _norm_8021x(s_8021x,
+                nm_setting_802_1x_get_subject_match,
+                NM_SETTING_802_1X_SUBJECT_MATCH,
+                &changed);
+    _norm_8021x(s_8021x,
+                nm_setting_802_1x_get_phase2_subject_match,
+                NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH,
+                &changed);
+    _norm_8021x(s_8021x,
+                nm_setting_802_1x_get_domain_suffix_match,
+                NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH,
+                &changed);
+    _norm_8021x(s_8021x,
+                nm_setting_802_1x_get_phase2_domain_suffix_match,
+                NM_SETTING_802_1X_PHASE2_DOMAIN_SUFFIX_MATCH,
+                &changed);
+    _norm_8021x(s_8021x,
+                nm_setting_802_1x_get_domain_match,
+                NM_SETTING_802_1X_DOMAIN_MATCH,
+                &changed);
+    _norm_8021x(s_8021x,
+                nm_setting_802_1x_get_phase2_domain_match,
+                NM_SETTING_802_1X_PHASE2_DOMAIN_MATCH,
+                &changed);
+
+    return changed;
+}
+
+static gboolean
 _normalize_required_settings(NMConnection *self)
 {
     NMSettingBluetooth *s_bt = nm_connection_get_setting_bluetooth(self);
@@ -1952,6 +2012,7 @@ _connection_normalize(NMConnection *connection,
     was_modified |= _normalize_bridge_vlan_order(connection);
     was_modified |= _normalize_bridge_port_vlan_order(connection);
     was_modified |= _normalize_gsm_auto_config(connection);
+    was_modified |= _normalize_802_1x_empty_strings(connection);
 
     was_modified = !!was_modified;