#include <gtk/gtk.h>
#include "gtkutils.h"
+#include "password.h"
#include "prefs.h"
#include "prefs_gtk.h"
#include "prefswindow.h"
gtk_widget_show(vbox);
for (i = 0; i < INTF_LAST; i++) {
+ gchar *pass;
prefs_page->frame[i] = gtk_frame_new(spam_interfaces[i].name);
gtk_box_pack_start(GTK_BOX(vbox), prefs_page->frame[i], FALSE, FALSE, 6);
gtk_entry_set_text(GTK_ENTRY(prefs_page->user_entry[i]),
spamreport_prefs.user[i] ? spamreport_prefs.user[i]:"");
- gtk_entry_set_text(GTK_ENTRY(prefs_page->pass_entry[i]),
- spamreport_prefs.pass[i] ? spamreport_prefs.pass[i]:"");
+
+ pass = password_decrypt(spamreport_prefs.pass[i], NULL);
+ gtk_entry_set_text(GTK_ENTRY(prefs_page->pass_entry[i]), pass ? pass:"");
+ if (pass != NULL) {
+ memset(pass, 0, strlen(pass));
+ }
+ g_free(pass);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prefs_page->enabled_chkbtn[i]),
spamreport_prefs.enabled[i]);
int i = 0;
for (i = 0; i < INTF_LAST; i++) {
+ gchar *pass;
g_free(spamreport_prefs.user[i]);
g_free(spamreport_prefs.pass[i]);
GTK_TOGGLE_BUTTON(prefs_page->enabled_chkbtn[i]));
spamreport_prefs.user[i] = gtk_editable_get_chars(
GTK_EDITABLE(prefs_page->user_entry[i]), 0, -1);
- spamreport_prefs.pass[i] = gtk_editable_get_chars(
- GTK_EDITABLE(prefs_page->pass_entry[i]), 0, -1);
+
+ pass = gtk_editable_get_chars(GTK_EDITABLE(prefs_page->pass_entry[i]), 0, -1);
+ spamreport_prefs.pass[i] = password_encrypt(pass, NULL);
+ memset(pass, 0, strlen(pass));
+ g_free(pass);
}
pref_file = prefs_write_open(rc_file_path);
} else
prefs_file_close(pref_file);
}
+
+void spamreport_master_passphrase_change(const gchar *oldp, const gchar *newp) {
+ gchar *pass;
+ int i;
+
+ for (i = 0; i < INTF_LAST; i++) {
+ pass = password_decrypt(spamreport_prefs.pass[i], oldp);
+ if (pass != NULL) {
+ g_free(spamreport_prefs.pass[i]);
+ spamreport_prefs.pass[i] = password_encrypt(pass, newp);
+ memset(pass, 0, strlen(pass));
+ }
+ g_free(pass);
+ }
+}