--- /dev/null
+--- libgda-5.2.4/providers/sqlcipher/sqlite3.c.org 2015-06-13 11:10:56.000000000 +0200
++++ libgda-5.2.4/providers/sqlcipher/sqlite3.c 2018-09-20 13:39:30.385033922 +0200
+@@ -15696,14 +15696,16 @@ static int sqlcipher_openssl_random (voi
+ }
+
+ static int sqlcipher_openssl_hmac(void *ctx, unsigned char *hmac_key, int key_sz, unsigned char *in, int in_sz, unsigned char *in2, int in2_sz, unsigned char *out) {
+- HMAC_CTX hctx;
++ HMAC_CTX *hctx;
+ unsigned int outlen;
+- HMAC_CTX_init(&hctx);
+- HMAC_Init_ex(&hctx, hmac_key, key_sz, EVP_sha1(), NULL);
+- HMAC_Update(&hctx, in, in_sz);
+- HMAC_Update(&hctx, in2, in2_sz);
+- HMAC_Final(&hctx, out, &outlen);
+- HMAC_CTX_cleanup(&hctx);
++ hctx = HMAC_CTX_new();
++ if (hctx == NULL)
++ return SQLITE_NOMEM;
++ HMAC_Init_ex(hctx, hmac_key, key_sz, EVP_sha1(), NULL);
++ HMAC_Update(hctx, in, in_sz);
++ HMAC_Update(hctx, in2, in2_sz);
++ HMAC_Final(hctx, out, &outlen);
++ HMAC_CTX_free(hctx);
+ return SQLITE_OK;
+ }
+
+@@ -15713,18 +15715,21 @@ static int sqlcipher_openssl_kdf(void *c
+ }
+
+ static int sqlcipher_openssl_cipher(void *ctx, int mode, unsigned char *key, int key_sz, unsigned char *iv, unsigned char *in, int in_sz, unsigned char *out) {
+- EVP_CIPHER_CTX ectx;
++ EVP_CIPHER_CTX *ectx;
+ int tmp_csz, csz;
+
+- EVP_CipherInit(&ectx, ((openssl_ctx *)ctx)->evp_cipher, NULL, NULL, mode);
+- EVP_CIPHER_CTX_set_padding(&ectx, 0); // no padding
+- EVP_CipherInit(&ectx, NULL, key, iv, mode);
+- EVP_CipherUpdate(&ectx, out, &tmp_csz, in, in_sz);
++ ectx = EVP_CIPHER_CTX_new();
++ if (ectx == NULL)
++ return SQLITE_NOMEM;
++ EVP_CipherInit(ectx, ((openssl_ctx *)ctx)->evp_cipher, NULL, NULL, mode);
++ EVP_CIPHER_CTX_set_padding(ectx, 0); // no padding
++ EVP_CipherInit(ectx, NULL, key, iv, mode);
++ EVP_CipherUpdate(ectx, out, &tmp_csz, in, in_sz);
+ csz = tmp_csz;
+ out += tmp_csz;
+- EVP_CipherFinal(&ectx, out, &tmp_csz);
++ EVP_CipherFinal(ectx, out, &tmp_csz);
+ csz += tmp_csz;
+- EVP_CIPHER_CTX_cleanup(&ectx);
++ EVP_CIPHER_CTX_free(ectx);
+ assert(in_sz == csz);
+ return SQLITE_OK;
+ }