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
This commit is contained in:
Dan Winship 2014-04-09 10:39:45 -04:00
parent 6c31eeb6bf
commit 65f2669173

View File

@ -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);
}