Skip to content

Commit 19bbe44

Browse files
authored
Merge pull request #1548 from FreeRDP/secplugin_28
Missing secret plugin handling
2 parents 1358b38 + 2b43e1d commit 19bbe44

2 files changed

Lines changed: 20 additions & 5 deletions

File tree

remmina/src/remmina_file.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ remmina_file_load(const gchar *filename)
239239
}
240240

241241
secret_plugin = remmina_plugin_manager_get_secret_plugin();
242-
secret_service_available = secret_plugin->is_service_available();
242+
secret_service_available = secret_plugin && secret_plugin->is_service_available();
243243

244244
remminafile->filename = g_strdup(filename);
245245
keys = g_key_file_get_keys(gkeyfile, "remmina", NULL, NULL);
@@ -433,7 +433,7 @@ void remmina_file_save(RemminaFile *remminafile)
433433
}
434434

435435
secret_plugin = remmina_plugin_manager_get_secret_plugin();
436-
secret_service_available = secret_plugin->is_service_available();
436+
secret_service_available = secret_plugin && secret_plugin->is_service_available();
437437

438438
g_hash_table_iter_init(&iter, remminafile->settings);
439439
while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&value)) {

remmina/src/remmina_mpchange.c

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -313,15 +313,30 @@ static gboolean remmina_file_multipasswd_changer_mt(gpointer d)
313313
GtkDialog* dialog;
314314
GtkWindow* mainwindow;
315315
GtkCellRendererToggle *toggle;
316+
RemminaSecretPlugin *secret_plugin;
317+
char *initerror;
316318

319+
mainwindow = remmina_main_get_window();
317320

318321
/* The multiple passowrd changer works only when a secret plugin is available */
319-
if (remmina_plugin_manager_get_secret_plugin() == NULL) {
320-
remmina_log_printf("The multi password changer does not work without a secret plugin\n");
322+
initerror = NULL;
323+
secret_plugin = remmina_plugin_manager_get_secret_plugin();
324+
if (secret_plugin == NULL) {
325+
initerror = _("The multi password changer cannot work without a secret plugin.\n");
326+
}else {
327+
if (!secret_plugin->is_service_available()) {
328+
initerror = _("The multi password changer does not work without a secret service.\n");
329+
}
330+
}
331+
if (initerror) {
332+
GtkWidget *msgDialog;
333+
msgDialog = gtk_message_dialog_new(mainwindow, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
334+
"%s", initerror);
335+
gtk_dialog_run(GTK_DIALOG(msgDialog));
336+
gtk_widget_destroy(msgDialog);
321337
return FALSE;
322338
}
323339

324-
mainwindow = remmina_main_get_window();
325340

326341
bu = remmina_public_gtk_builder_new_from_file("remmina_mpc.glade");
327342
if (!bu) {

0 commit comments

Comments
 (0)