Fix bug #3342 ‘"Automatically accept unknown valid SSL certificates" is unfortunate...
[claws.git] / src / prefs_account.c
index 3db4b33733c2b217e7a6a09e4856c4d6fdf86cd1..62507bbcc0a9de9536d4c70eb5d47d99846fc3b8 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2013 Hiroyuki Yamamoto and the Claws Mail team
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 1999-2015 Hiroyuki Yamamoto and the Claws Mail team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -14,7 +14,6 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * 
  */
 
 #ifdef HAVE_CONFIG_H
@@ -1583,6 +1582,7 @@ static void receive_create_widget_func(PrefsPage * _page,
        COMBOBOX_ADD (menu, "ANONYMOUS", IMAP_AUTH_ANON);
        COMBOBOX_ADD (menu, "GSSAPI", IMAP_AUTH_GSSAPI);
        COMBOBOX_ADD (menu, "DIGEST-MD5", IMAP_AUTH_DIGEST_MD5);
+       COMBOBOX_ADD (menu, "SCRAM-SHA-1", IMAP_AUTH_SCRAM_SHA1);
 
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox1);
@@ -2554,7 +2554,7 @@ static void ssl_create_widget_func(PrefsPage * _page,
        gtk_box_pack_start (GTK_BOX (vbox1), vbox7, FALSE, FALSE, 0);
 
        PACK_CHECK_BUTTON(vbox7, ssl_certs_auto_accept_checkbtn,
-                         _("Automatically accept unknown valid SSL certificates"));
+                         _("Automatically accept valid SSL certificates"));
 
        PACK_CHECK_BUTTON(vbox7, use_nonblocking_ssl_checkbtn,
                          _("Use non-blocking SSL"));
@@ -3523,7 +3523,6 @@ void prefs_account_read_config(PrefsAccount *ac_prefs, const gchar *label)
                strv = g_strsplit(privacy_prefs, ",", 0);
                for (cur = strv; *cur != NULL; cur++) {
                        gchar *encvalue, *tmp;
-                       gchar value[1024];
 
                        encvalue = strchr(*cur, '=');
                        if (encvalue == NULL)
@@ -3531,13 +3530,11 @@ void prefs_account_read_config(PrefsAccount *ac_prefs, const gchar *label)
                        encvalue[0] = '\0';
                        encvalue++;
 
-                       tmp = g_base64_decode(encvalue, &len);
-                       if (len > 0) {
-                               g_strlcat(value, tmp, 1024);
-                               value[len] = '\0';
-                               g_hash_table_insert(ac_prefs->privacy_prefs, g_strdup(*cur), g_strdup(value));
-                       }
-                       g_free(tmp);
+                       tmp = g_base64_decode_zero(encvalue, &len);
+                       if (len > 0)
+                               g_hash_table_insert(ac_prefs->privacy_prefs, g_strdup(*cur), tmp);
+                       else
+                               g_free(tmp);
                }
                g_strfreev(strv);
                g_free(privacy_prefs);
@@ -3850,8 +3847,8 @@ static void auto_configure_cb (GtkWidget *widget, gpointer data)
                g_free(address);
                gtk_label_set_text(GTK_LABEL(basic_page.auto_configure_lbl),
                           _("Failed (wrong address)"));
+               return;
        }
-       domain = strchr(address, '@') + 1;
 
        if (protocol == A_POP3 || protocol == A_IMAP4) {
                recv_data = g_new0(AutoConfigureData, 1);
@@ -3863,7 +3860,7 @@ static void auto_configure_cb (GtkWidget *widget, gpointer data)
                case A_POP3:
                        recv_data->ssl_service = "pop3s";
                        recv_data->tls_service = "pop3";
-                       recv_data->domain = g_strdup(domain);
+                       recv_data->address = g_strdup(address);
                        recv_data->hostname_entry = GTK_ENTRY(basic_page.recvserv_entry);
                        recv_data->set_port = GTK_TOGGLE_BUTTON(advanced_page.popport_checkbtn);
                        recv_data->port = GTK_SPIN_BUTTON(advanced_page.popport_spinbtn);
@@ -3871,11 +3868,12 @@ static void auto_configure_cb (GtkWidget *widget, gpointer data)
                        recv_data->ssl_checkbtn = GTK_TOGGLE_BUTTON(ssl_page.pop_ssltunnel_radiobtn);
                        recv_data->default_port = 110;
                        recv_data->default_ssl_port = 995;
+                       recv_data->uid_entry = GTK_ENTRY(basic_page.uid_entry);
                        break;
                case A_IMAP4:
                        recv_data->ssl_service = "imaps";
                        recv_data->tls_service = "imap";
-                       recv_data->domain = g_strdup(domain);
+                       recv_data->address = g_strdup(address);
                        recv_data->hostname_entry = GTK_ENTRY(basic_page.recvserv_entry);
                        recv_data->set_port = GTK_TOGGLE_BUTTON(advanced_page.imapport_checkbtn);
                        recv_data->port = GTK_SPIN_BUTTON(advanced_page.imapport_spinbtn);
@@ -3883,6 +3881,7 @@ static void auto_configure_cb (GtkWidget *widget, gpointer data)
                        recv_data->ssl_checkbtn = GTK_TOGGLE_BUTTON(ssl_page.imap_ssltunnel_radiobtn);
                        recv_data->default_port = 143;
                        recv_data->default_ssl_port = 993;
+                       recv_data->uid_entry = GTK_ENTRY(basic_page.uid_entry);
                        break;
                default:
                        cm_return_if_fail(FALSE);
@@ -3898,7 +3897,7 @@ static void auto_configure_cb (GtkWidget *widget, gpointer data)
 
        send_data->ssl_service = NULL;
        send_data->tls_service = "submission";
-       send_data->domain = g_strdup(domain);
+       recv_data->address = g_strdup(address);
        send_data->hostname_entry = GTK_ENTRY(basic_page.smtpserv_entry);
        send_data->set_port = GTK_TOGGLE_BUTTON(advanced_page.smtpport_checkbtn);
        send_data->port = GTK_SPIN_BUTTON(advanced_page.smtpport_spinbtn);
@@ -3906,6 +3905,7 @@ static void auto_configure_cb (GtkWidget *widget, gpointer data)
        send_data->ssl_checkbtn = NULL;
        send_data->default_port = 25;
        send_data->default_ssl_port = -1;
+       send_data->uid_entry = NULL;
        send_data->auth_checkbtn = GTK_TOGGLE_BUTTON(send_page.smtp_auth_checkbtn);
 
        auto_configure_service(send_data);