<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/5635781b2447249e1062c587a1e95cb0f843d78f">https://github.com/macports/macports-ports/commit/5635781b2447249e1062c587a1e95cb0f843d78f</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 5635781b2447249e1062c587a1e95cb0f843d78f
</span>Author: Clemens Lang <cal@macports.org>
AuthorDate: Thu Oct 17 09:53:25 2024 +0200
<span style='display:block; white-space:pre;color:#404040;'> openssl3: Fix CVE-2024-9143
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Upstream advisory:
</span><span style='display:block; white-space:pre;color:#404040;'> https://openssl-library.org/news/secadv/20241016.txt
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Severity is low, binary curves are not used very much, and this isn't
</span><span style='display:block; white-space:pre;color:#404040;'> exploitable through common curve description format, so this is pretty
</span><span style='display:block; white-space:pre;color:#404040;'> much a nothing-burger. If you use binary field curves, take my advice
</span><span style='display:block; white-space:pre;color:#404040;'> and start using something else, though.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> CVE: CVE-2024-9143
</span>---
devel/openssl3/Portfile | 5 +-
.../8e008cb8b23ec7dc75c45a66eeed09c815b11cd2.patch | 201 +++++++++++++++++++++
2 files changed, 205 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/openssl3/Portfile b/devel/openssl3/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index de7e0160cec..338fbfdce15 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/openssl3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/openssl3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,7 +14,7 @@ set major_v 3
</span> epoch 1
github.setup openssl openssl ${major_v}.3.2 openssl-
name openssl3
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 1
</span>
github.tarball_from releases
checksums rmd160 a904b3c3c9fcb9ab9248bfc0225003fa610d382f \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -80,6 +80,9 @@ patchfiles-append patch-mkinstallvars.diff
</span> #
patchfiles-append patch-use-timegm.diff
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Fix CVE-2024-9143
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append 8e008cb8b23ec7dc75c45a66eeed09c815b11cd2.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> if {${os.platform} eq "darwin" && ${os.major} < 11} {
# Having the stdlib set to libc++ on 10.6 causes a dependency on a
# macports-clang compiler to be added, which would be a dep cycle.
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/openssl3/files/8e008cb8b23ec7dc75c45a66eeed09c815b11cd2.patch b/devel/openssl3/files/8e008cb8b23ec7dc75c45a66eeed09c815b11cd2.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..037d5917695
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/openssl3/files/8e008cb8b23ec7dc75c45a66eeed09c815b11cd2.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,201 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 8e008cb8b23ec7dc75c45a66eeed09c815b11cd2 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Viktor Dukhovni <viktor@openssl.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 19 Sep 2024 01:02:40 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Harden BN_GF2m_poly2arr against misuse.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The BN_GF2m_poly2arr() function converts characteristic-2 field
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(GF_{2^m}) Galois polynomials from a representation as a BIGNUM bitmask,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+to a compact array with just the exponents of the non-zero terms.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+These polynomials are then used in BN_GF2m_mod_arr() to perform modular
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+reduction. A precondition of calling BN_GF2m_mod_arr() is that the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+polynomial must have a non-zero constant term (i.e. the array has `0` as
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+its final element).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Internally, callers of BN_GF2m_poly2arr() did not verify that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+precondition, and binary EC curve parameters with an invalid polynomial
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+could lead to out of bounds memory reads and writes in BN_GF2m_mod_arr().
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The precondition is always true for polynomials that arise from the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+standard form of EC parameters for characteristic-two fields (X9.62).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See the "Finite Field Identification" section of:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ https://www.itu.int/ITU-T/formal-language/itu-t/x/x894/2018-cor1/ANSI-X9-62.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The OpenSSL GF(2^m) code supports only the trinomial and pentanomial
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+basis X9.62 forms.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This commit updates BN_GF2m_poly2arr() to return `0` (failure) when
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the constant term is zero (i.e. the input bitmask BIGNUM is not odd).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Additionally, the return value is made unambiguous when there is not
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enough space to also pad the array with a final `-1` sentinel value.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The return value is now always the number of elements (including the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+final `-1`) that would be filled when the output array is sufficiently
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+large. Previously the same count was returned both when the array has
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+just enough room for the final `-1` and when it had only enough space
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+for non-sentinel values.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Finally, BN_GF2m_poly2arr() is updated to reject polynomials whose
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+degree exceeds `OPENSSL_ECC_MAX_FIELD_BITS`, this guards against
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+CPU exhausition attacks via excessively large inputs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The above issues do not arise in processing X.509 certificates. These
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+generally have EC keys from "named curves", and RFC5840 (Section 2.1.1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+disallows explicit EC parameters. The TLS code in OpenSSL enforces this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+constraint only after the certificate is decoded, but, even if explicit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+parameters are specified, they are in X9.62 form, which cannot represent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+problem values as noted above.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Initially reported as oss-fuzz issue 71623.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A closely related issue was earlier reported in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<https://github.com/openssl/openssl/issues/19826>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Severity: Low, CVE-2024-9143
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed-by: Matt Caswell <matt@openssl.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed-by: Paul Dale <ppzgs1@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed-by: Tomas Mraz <tomas@openssl.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(Merged from https://github.com/openssl/openssl/pull/25639)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Upstream-Status: Backport [https://github.com/openssl/openssl/commit/8e008cb8b23ec7dc75c45a66eeed09c815b11cd2]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ crypto/bn/bn_gf2m.c | 28 +++++++++++++++-------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test/ec_internal_test.c | 51 +++++++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 71 insertions(+), 8 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/crypto/bn/bn_gf2m.c b/crypto/bn/bn_gf2m.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 444c5ca7a3..ae7e9d751c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./crypto/bn/bn_gf2m.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./crypto/bn/bn_gf2m.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -15,6 +15,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "bn_local.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef OPENSSL_NO_EC2M
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <openssl/ec.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Maximum number of iterations before BN_GF2m_mod_solve_quad_arr should
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1130,16 +1131,26 @@ int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Convert the bit-string representation of a polynomial ( \sum_{i=0}^n a_i *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * x^i) into an array of integers corresponding to the bits with non-zero
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * coefficient. Array is terminated with -1. Up to max elements of the array
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * will be filled. Return value is total number of array elements that would
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * be filled if array was large enough.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * coefficient. The array is intended to be suitable for use with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * `BN_GF2m_mod_arr()`, and so the constant term of the polynomial must not be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * zero. This translates to a requirement that the input BIGNUM `a` is odd.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Given sufficient room, the array is terminated with -1. Up to max elements
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * of the array will be filled.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * The return value is total number of array elements that would be filled if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * array was large enough, including the terminating `-1`. It is `0` when `a`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * is not odd or the constant term is zero contrary to requirement.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * The return value is also `0` when the leading exponent exceeds
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * `OPENSSL_ECC_MAX_FIELD_BITS`, this guards against CPU exhaustion attacks,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int i, j, k = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ BN_ULONG mask;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (BN_is_zero(a))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!BN_is_odd(a))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (i = a->top - 1; i >= 0; i--) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1157,12 +1168,13 @@ int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (k < max) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (k > 0 && p[0] > OPENSSL_ECC_MAX_FIELD_BITS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (k < max)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ p[k] = -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- k++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return k;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return k + 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test/ec_internal_test.c b/test/ec_internal_test.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e5bbd3632c..0268142ae7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./test/ec_internal_test.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./test/ec_internal_test.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -156,6 +156,56 @@ static int field_tests_ecp_mont(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef OPENSSL_NO_EC2M
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Test that decoding of invalid GF2m field parameters fails. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static int ec2m_field_sanity(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int ret = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BN_CTX *ctx = BN_CTX_new();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BIGNUM *p, *a, *b;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ EC_GROUP *group1 = NULL, *group2 = NULL, *group3 = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ TEST_info("Testing GF2m hardening\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BN_CTX_start(ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ p = BN_CTX_get(ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ a = BN_CTX_get(ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!TEST_ptr(b = BN_CTX_get(ctx))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ || !TEST_true(BN_one(a))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ || !TEST_true(BN_one(b)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto out;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Even pentanomial value should be rejected */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!TEST_true(BN_set_word(p, 0xf2)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto out;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!TEST_ptr_null(group1 = EC_GROUP_new_curve_GF2m(p, a, b, ctx)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ TEST_error("Zero constant term accepted in GF2m polynomial");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Odd hexanomial should also be rejected */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!TEST_true(BN_set_word(p, 0xf3)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto out;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!TEST_ptr_null(group2 = EC_GROUP_new_curve_GF2m(p, a, b, ctx)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ TEST_error("Hexanomial accepted as GF2m polynomial");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Excessive polynomial degree should also be rejected */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!TEST_true(BN_set_word(p, 0x71))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ || !TEST_true(BN_set_bit(p, OPENSSL_ECC_MAX_FIELD_BITS + 1)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto out;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!TEST_ptr_null(group3 = EC_GROUP_new_curve_GF2m(p, a, b, ctx)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ TEST_error("GF2m polynomial degree > %d accepted",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ OPENSSL_ECC_MAX_FIELD_BITS);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ret = group1 == NULL && group2 == NULL && group3 == NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ out:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ EC_GROUP_free(group1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ EC_GROUP_free(group2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ EC_GROUP_free(group3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BN_CTX_end(ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BN_CTX_free(ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* test EC_GF2m_simple_method directly */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int field_tests_ec2_simple(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -506,6 +556,7 @@ int setup_tests(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ADD_TEST(field_tests_ecp_simple);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ADD_TEST(field_tests_ecp_mont);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef OPENSSL_NO_EC2M
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ADD_TEST(ec2m_field_sanity);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ADD_TEST(field_tests_ec2_simple);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ADD_ALL_TESTS(field_tests_default, crv_len);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.47.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>
</pre>