Package: libopenconnect3 Version: 6.00-1+b1 Severity: important Tags: patch
Hello, When using openconnect when my belpic card, openconnect is crashing with a double free error. Got no issuer from PKCS#11 *** Error in `/usr/sbin/openconnect': double free or corruption (!prev): 0x0000555555cc5650 *** The attached patch (coming from upstream) fix this issue Cheers, Laurent Bigonville -- System Information: Debian Release: 8.0 APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.19.0-trunk-amd64 (SMP w/8 CPU cores) Locale: LANG=fr_BE.utf8, LC_CTYPE=fr_BE.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages libopenconnect3 depends on: ii libc6 2.19-17 ii libgnutls-deb0-28 3.3.8-6 ii liboath0 2.4.1-1 ii libp11-kit0 0.20.7-1 ii libproxy1 0.4.11-4+b2 ii libstoken1 0.6-1 ii libxml2 2.9.2+dfsg1-3 ii multiarch-support 2.19-17 ii zlib1g 1:1.2.8.dfsg-2+b1 Versions of packages libopenconnect3 recommends: ii ca-certificates 20141019 libopenconnect3 suggests no packages. -- no debconf information
diff -Nru openconnect-6.00/debian/patches/01_fix-double-free.patch openconnect-6.00/debian/patches/01_fix-double-free.patch --- openconnect-6.00/debian/patches/01_fix-double-free.patch 1970-01-01 01:00:00.000000000 +0100 +++ openconnect-6.00/debian/patches/01_fix-double-free.patch 2015-03-26 12:21:02.000000000 +0100 @@ -0,0 +1,40 @@ +From: Paul Donohue <[email protected]> +Date: Fri, 24 Oct 2014 14:58:02 +0000 (-0400) +Subject: Fix invalid/double free if PKCS#11 token does not include CA certs +X-Git-Tag: v7.00~86 +X-Git-Url: http://git.infradead.org/users/dwmw2/openconnect.git/commitdiff_plain/3215c30539daf96d4ee9f358e2b6c67f8b01dfdd + +Fix invalid/double free if PKCS#11 token does not include CA certs + +Commit b06b862f5 ("Include supporting certificates from PKCS#11 tokens") +calls gnutls_free() on an invalid 't.data' value if +gnutls_pkcs11_get_raw_issuer() returns an error, and calls +gnutls_x509_crt_deinit() twice on 'issuer' if gnutls_x509_crt_import() +returns an error. + +If the Issuer cert is not available on the PKCS#11 token, +then gnutls_pkcs11_get_raw_issuer() fails and the call to +gnutls_free(t.data) causes libc to print the following message then +kill the process: +--- a/gnutls.c ++++ b/gnutls.c +@@ -1506,7 +1506,10 @@ static int load_certificate(struct openc + err = gnutls_x509_crt_import(issuer, &t, GNUTLS_X509_FMT_DER); + if (err) + gnutls_x509_crt_deinit(issuer); ++ else ++ free_issuer = 1; + } ++ gnutls_free(t.data); + } + if (err) { + vpn_progress(vpninfo, PRG_ERR, +@@ -1517,8 +1520,6 @@ static int load_certificate(struct openc + vpn_progress(vpninfo, PRG_ERR, + _("Got next CA '%s' from PKCS11\n"), name); + } +- free_issuer = 1; +- gnutls_free(t.data); + } + #endif + if (err) diff -Nru openconnect-6.00/debian/patches/series openconnect-6.00/debian/patches/series --- openconnect-6.00/debian/patches/series 1970-01-01 01:00:00.000000000 +0100 +++ openconnect-6.00/debian/patches/series 2015-03-26 12:19:53.000000000 +0100 @@ -0,0 +1 @@ +01_fix-double-free.patch

