"Upgrade openssl 1.1.1m and fix crash with new openssl version (#453)"
https://github.com/open-eid/libdigidocpp/commit/42a8cfd

Index: src/crypto/TS.cpp
--- src/crypto/TS.cpp.orig
+++ src/crypto/TS.cpp
@@ -48,6 +48,7 @@ static void TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx
 
 static void TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, unsigned char *hexstr, long len)
 {
+    OPENSSL_free(ctx->imprint);
     ctx->imprint = hexstr;
     ctx->imprint_len = unsigned(len);
 }
@@ -257,11 +258,10 @@ void TS::verify(const Digest &digest)
     {
         SCOPE(TS_VERIFY_CTX, ctx, TS_VERIFY_CTX_new());
         TS_VERIFY_CTX_set_flags(ctx.get(), TS_VFY_IMPRINT|TS_VFY_VERSION|TS_VFY_SIGNATURE);
-        TS_VERIFY_CTX_set_imprint(ctx.get(), data.data(), long(data.size()));
+        TS_VERIFY_CTX_set_imprint(ctx.get(),
+            (unsigned char*)OPENSSL_memdup(data.data(), data.size()), long(data.size()));
         TS_VERIFY_CTX_set_store(ctx.get(), store.release());
-        int err = TS_RESP_verify_token(ctx.get(), d.get());
-        TS_VERIFY_CTX_set_imprint(ctx.get(), nullptr, 0); //Avoid CRYPTO_free
-        if(err != 1)
+        if(TS_RESP_verify_token(ctx.get(), d.get()) != 1)
         {
             unsigned long err = ERR_get_error();
             if(ERR_GET_LIB(err) == ERR_LIB_TS && ERR_GET_REASON(err) == TS_R_CERTIFICATE_VERIFY_ERROR)
