talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit e67ebcf6e95406d72b604fd5b764d58a76a1a708
parent 4395a2a4f950a72580b65564b01bc105de2f37d2
Author: Ricardo Mones <ricardo@mones.org>
Date:   Fri, 12 Jan 2024 13:02:34 +0100

Fail earlier when certificate sizes differ

There's no need to allocate memory and waste cycles exporting
certificates to fail afterwards because sizes differ.

Diffstat:
Msrc/common/ssl_certificate.c | 11+++++------
1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/common/ssl_certificate.c b/src/common/ssl_certificate.c @@ -494,6 +494,11 @@ static gboolean ssl_certificate_compare (SSLCertificate *cert_a, SSLCertificate return FALSE; } + if (cert_size_a != cert_size_b) { + debug_print("sizes differ: %"G_GSIZE_FORMAT" != %"G_GSIZE_FORMAT"\n", cert_size_a, cert_size_b); + return FALSE; + } + output_a = g_malloc(cert_size_a); output_b = g_malloc(cert_size_b); if ((r = gnutls_x509_crt_export(cert_a->x509_cert, GNUTLS_X509_FMT_DER, output_a, &cert_size_a)) < 0) { @@ -508,12 +513,6 @@ static gboolean ssl_certificate_compare (SSLCertificate *cert_a, SSLCertificate g_free(output_b); return FALSE; } - if (cert_size_a != cert_size_b) { - debug_print("sizes differ: %"G_GSIZE_FORMAT" != %"G_GSIZE_FORMAT"\n", cert_size_a, cert_size_b); - g_free(output_a); - g_free(output_b); - return FALSE; - } if (memcmp(output_a, output_b, cert_size_a)) { debug_print("contents differ\n"); g_free(output_a);