Changeset: d53f274a122c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d53f274a122c
Branch: default
Log Message:

Merge with Dec2025 branch.


diffs (63 lines):

diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c
--- a/gdk/gdk_string.c
+++ b/gdk/gdk_string.c
@@ -9872,6 +9872,13 @@ BATasciify(BAT *b, BAT *s)
 
 #include <openssl/evp.h>
 
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L &&  OPENSSL_VERSION_NUMBER < 
0x30000070L
+#define NEED_LEGACY
+#include <openssl/provider.h>
+static OSSL_PROVIDER *legacy, *default_;
+static MT_Lock ssl_lock = MT_LOCK_INITIALIZER(ssl_lock);
+#endif
+
 gdk_return
 BATaggrdigest(allocator *ma, BAT **bnp, char **shap, const char *digest,
              BAT *b, BAT *g, BAT *e, BAT *s, bool skip_nils)
@@ -9905,8 +9912,19 @@ BATaggrdigest(allocator *ma, BAT **bnp, 
        allocator *ta = MT_thread_getallocator();
        allocator_state ta_state = ma_open(ta);
 
+#ifdef NEED_LEGACY
+       EVP_MD *md;
+       MT_lock_set(&ssl_lock);
+       if (legacy == NULL) {
+               legacy = OSSL_PROVIDER_load(NULL, "legacy");
+               default_ = OSSL_PROVIDER_load(NULL, "default");
+       }
+       MT_lock_unset(&ssl_lock);
+       md = EVP_MD_fetch(NULL, digest, NULL);
+#else
        const EVP_MD *md;
        md = EVP_get_digestbyname(digest);
+#endif
        EVP_MD_CTX **mdctx = ma_zalloc(ta, ngrp * sizeof(*mdctx));
        if (mdctx == NULL)
                goto bailout;
@@ -9952,6 +9970,7 @@ BATaggrdigest(allocator *ma, BAT **bnp, 
                        strcpy_len(digestbuf, str_nil, sizeof(digestbuf));
                } else {
                        if (!EVP_DigestFinal_ex(mdctx[gid], md_value, &md_len)) 
{
+                               GDKerror("Could not update digest value.\n");
                                goto bailout;
                        }
                        for (unsigned int x = 0; x < md_len; x++) {
@@ -9971,11 +9990,17 @@ BATaggrdigest(allocator *ma, BAT **bnp, 
                        }
                }
        }
+#ifdef NEED_LEGACY
+       EVP_MD_free(md);
+#endif
        bat_iterator_end(&bi);
        ma_close(&ta_state);
        return GDK_SUCCEED;
 
   bailout:
+#ifdef NEED_LEGACY
+       EVP_MD_free(md);
+#endif
        bat_iterator_end(&bi);
        if (mdctx) {
                for (gid = 0; gid < ngrp; gid++)
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to