diff options
Diffstat (limited to 'src/wireless-security/ws-wpa-psk.c')
-rw-r--r-- | src/wireless-security/ws-wpa-psk.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/wireless-security/ws-wpa-psk.c b/src/wireless-security/ws-wpa-psk.c index befe68b0..1ea1791b 100644 --- a/src/wireless-security/ws-wpa-psk.c +++ b/src/wireless-security/ws-wpa-psk.c @@ -56,6 +56,7 @@ static gboolean validate (WirelessSecurity *parent, GError **error) { GtkWidget *entry; + NMSettingSecretFlags secret_flags; const char *key; gsize len; int i; @@ -63,15 +64,18 @@ validate (WirelessSecurity *parent, GError **error) entry = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wpa_psk_entry")); g_assert (entry); + secret_flags = nma_utils_menu_to_secret_flags (entry); key = gtk_entry_get_text (GTK_ENTRY (entry)); len = key ? strlen (key) : 0; - if ((len < 8) || (len > 64)) { + + if ( secret_flags & NM_SETTING_SECRET_FLAG_NOT_SAVED + || secret_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED) { + /* All good. */ + } else if ((len < 8) || (len > 64)) { widget_set_error (entry); g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, _("invalid wpa-psk: invalid key-length %zu. Must be [8,63] bytes or 64 hex digits"), len); return FALSE; - } - - if (len == 64) { + } else if (len == 64) { /* Hex PSK */ for (i = 0; i < len; i++) { if (!isxdigit (key[i])) { |