[shotwell/shotwell-0.30] piwigo: Do not crash on empty certificate
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [shotwell/shotwell-0.30] piwigo: Do not crash on empty certificate
- Date: Fri, 31 May 2019 17:44:10 +0000 (UTC)
commit d6d8e7a548f3f4b1cf8292b16bdd897c40971d92
Author: Jens Georg <mail jensge org>
Date: Fri May 31 19:21:21 2019 +0200
piwigo: Do not crash on empty certificate
Apparently there are cases where SoupMessage.get_https_status() does not
return a certificate. In that case, do not show the detail button.
Fixes #134
plugins/shotwell-publishing/PiwigoPublishing.vala | 48 ++++++++++++-----------
1 file changed, 26 insertions(+), 22 deletions(-)
---
diff --git a/plugins/shotwell-publishing/PiwigoPublishing.vala
b/plugins/shotwell-publishing/PiwigoPublishing.vala
index 649f1358..f1777898 100644
--- a/plugins/shotwell-publishing/PiwigoPublishing.vala
+++ b/plugins/shotwell-publishing/PiwigoPublishing.vala
@@ -1010,7 +1010,7 @@ internal class SSLErrorPane : Shotwell.Plugins.Common.BuilderPane {
public signal void proceed ();
public string host { owned get; construct; }
- public TlsCertificate cert { private get; construct; }
+ public TlsCertificate? cert { private get; construct; }
public string error_text { owned get; construct; }
public SSLErrorPane (SessionLoginTransaction transaction,
@@ -1037,28 +1037,32 @@ internal class SSLErrorPane : Shotwell.Plugins.Common.BuilderPane {
label.set_text (error_text);
var info = this.get_builder ().get_object ("default") as Gtk.Button;
- info.clicked.connect (() => {
- var simple_cert = new Gcr.SimpleCertificate (cert.certificate.data);
- var widget = new Gcr.CertificateWidget (simple_cert);
- bool use_header = true;
- Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
- var flags = (Gtk.DialogFlags) 0;
- if (use_header) {
- flags |= Gtk.DialogFlags.USE_HEADER_BAR;
- }
+ if (cert != null) {
+ info.clicked.connect (() => {
+ var simple_cert = new Gcr.SimpleCertificate (cert.certificate.data);
+ var widget = new Gcr.CertificateWidget (simple_cert);
+ bool use_header = true;
+ Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
+ var flags = (Gtk.DialogFlags) 0;
+ if (use_header) {
+ flags |= Gtk.DialogFlags.USE_HEADER_BAR;
+ }
- var dialog = new Gtk.Dialog.with_buttons (
- _("Certificate of %s").printf (host),
- null,
- flags,
- _("_OK"), Gtk.ResponseType.OK);
- dialog.get_content_area ().add (widget);
- dialog.set_default_response (Gtk.ResponseType.OK);
- dialog.set_default_size (640, -1);
- dialog.show_all ();
- dialog.run ();
- dialog.destroy ();
- });
+ var dialog = new Gtk.Dialog.with_buttons (
+ _("Certificate of %s").printf (host),
+ null,
+ flags,
+ _("_OK"), Gtk.ResponseType.OK);
+ dialog.get_content_area ().add (widget);
+ dialog.set_default_response (Gtk.ResponseType.OK);
+ dialog.set_default_size (640, -1);
+ dialog.show_all ();
+ dialog.run ();
+ dialog.destroy ();
+ });
+ } else {
+ info.get_parent().remove(info);
+ }
var proceed = this.get_builder ().get_object ("proceed_button") as Gtk.Button;
proceed.clicked.connect (() => { this.proceed (); });
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]