On error, gnutls_x509_crt_list_import() deinitializes any certificates
that it loaded (this isn't documented, of course, but see [1]). However,
we're also deinitializing them in the error handling case, resulting in
a double-free. Set nr_extra_certs to zero in that case so that we don't
crash.

1: https://gitlab.com/gnutls/gnutls/blob/gnutls_3_6_9/lib/x509/x509.c#L3864

Signed-off-by: Omar Sandoval <[email protected]>
---
 gnutls.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnutls.c b/gnutls.c
index 4f915d62..4a000af9 100644
--- a/gnutls.c
+++ b/gnutls.c
@@ -1082,6 +1082,7 @@ static int load_certificate(struct openconnect_info 
*vpninfo)
                vpn_progress(vpninfo, PRG_ERR,
                             _("Loading certificate failed: %s\n"),
                             reason);
+               nr_extra_certs = 0;
                ret = -EINVAL;
                goto out;
        }
-- 
2.23.0


_______________________________________________
openconnect-devel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/openconnect-devel

Reply via email to