From 65f26691733a8c8b48476d899b52cf17c0cfae88 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 9 Apr 2014 10:39:45 -0400 Subject: [PATCH] gtlscertificate: fix certificate list parsing with trailing comments g_tls_certificate_list_new_from_file() was supposed to ignore non-PEM content, but it accidentally required that there not be anything after the last certificate. Fix that. https://bugzilla.gnome.org/show_bug.cgi?id=727692 --- gio/gtlscertificate.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/gio/gtlscertificate.c b/gio/gtlscertificate.c index a532fe5..47de03d 100644 --- a/gio/gtlscertificate.c +++ b/gio/gtlscertificate.c @@ -476,19 +476,24 @@ g_tls_certificate_list_new_from_file (const gchar *file, { gchar *cert_pem; GTlsCertificate *cert = NULL; + GError *parse_error = NULL; - cert_pem = parse_next_pem_certificate (&p, end, FALSE, error); + cert_pem = parse_next_pem_certificate (&p, end, FALSE, &parse_error); if (cert_pem) - { - cert = g_tls_certificate_new_internal (cert_pem, NULL, error); - g_free (cert_pem); - } + { + cert = g_tls_certificate_new_internal (cert_pem, NULL, &parse_error); + g_free (cert_pem); + } if (!cert) - { - g_list_free_full (queue.head, g_object_unref); - queue.head = NULL; - break; - } + { + if (parse_error) + { + g_propagate_error (error, parse_error); + g_list_free_full (queue.head, g_object_unref); + queue.head = NULL; + } + break; + } g_queue_push_tail (&queue, cert); } -- 2.7.4