---- poldek-0.32.2/tndb/read.c~ 2016-01-30 17:59:59.000000000 +0100
-+++ poldek-0.32.2/tndb/read.c 2018-09-14 18:35:56.516594794 +0200
-@@ -53,20 +53,22 @@ static
- int md5(FILE *stream, unsigned char *md, unsigned *md_size)
- {
- unsigned char buf[8*1024];
-- EVP_MD_CTX ctx;
-+ EVP_MD_CTX *ctx;
- unsigned n, nn = 0;
-
-
- n_assert(md_size && *md_size);
-
-- EVP_DigestInit(&ctx, EVP_md5());
-+ ctx = EVP_MD_CTX_create();
-+ if (!EVP_DigestInit(ctx, EVP_md5()))
-+ return 0;
-
- while ((n = fread(buf, 1, sizeof(buf), stream)) > 0) {
-- EVP_DigestUpdate(&ctx, buf, n);
-+ EVP_DigestUpdate(ctx, buf, n);
- nn += n;
- }
-
-- EVP_DigestFinal(&ctx, buf, &n);
-+ EVP_DigestFinal(ctx, buf, &n);
-
- if (n > *md_size) {
- *md = '\0';
-@@ -75,7 +77,9 @@ int md5(FILE *stream, unsigned char *md,
- memcpy(md, buf, n);
- *md_size = n;
- }
--
-+
-+ EVP_MD_CTX_destroy(ctx);
-+
- return *md_size;
- }
-
---- poldek-0.32.2/tndb/tndb.c~ 2016-01-30 17:59:59.000000000 +0100
-+++ poldek-0.32.2/tndb/tndb.c 2018-09-14 18:40:57.805504132 +0200
-@@ -85,13 +85,13 @@ char *tndb_bin2hex_s(const unsigned char
- //static
- void tndb_sign_init(struct tndb_sign *sign)
- {
-- EVP_MD_CTX ctx;
-+ EVP_MD_CTX *ctx;
-
- memset(sign, 0, sizeof(*sign));
-
-- EVP_DigestInit(&ctx, EVP_sha1());
-- sign->ctx = n_malloc(sizeof(ctx));
-- memcpy(sign->ctx, &ctx, sizeof(ctx));
-+ ctx = EVP_MD_CTX_create();
-+ EVP_DigestInit(ctx, EVP_sha1());
-+ sign->ctx = ctx;
- //printf("%p %p >> INIT\n", sign, sign->ctx);
- }
-
-@@ -122,8 +122,8 @@ void tndb_sign_final(struct tndb_sign *s
- *sign->md = '\0';
- else
- memcpy(sign->md, buf, n);
--
-- free(sign->ctx);
-+
-+ EVP_MD_CTX_destroy((EVP_MD_CTX *)sign->ctx);
- sign->ctx = NULL;
-
- }
---- poldek-0.32.2/pkgdir/pdir/digest.c~ 2016-01-30 15:05:57.000000000 +0100
-+++ poldek-0.32.2/pkgdir/pdir/digest.c 2018-09-14 18:52:42.783229333 +0200
-@@ -195,12 +195,13 @@ int hdr_digest(tn_stream *st, unsigned c
- int nread, len, endvhdr_found = 0;
- unsigned char buf[256];
- char line[4096];
-- EVP_MD_CTX ctx;
-+ EVP_MD_CTX *ctx;
- unsigned n;
-
-
- n_assert(md_size && *md_size);
-- EVP_DigestInit(&ctx, EVP_sha1());
-+ ctx = EVP_MD_CTX_create();
-+ EVP_DigestInit(ctx, EVP_sha1());
-
- len = strlen(pdir_tag_endvarhdr);
- n = 0;
-@@ -208,7 +209,7 @@ int hdr_digest(tn_stream *st, unsigned c
- while ((nread = n_stream_gets(st, line, sizeof(line))) > 0) {
- char *p = line;
-
-- EVP_DigestUpdate(&ctx, line, nread);
-+ EVP_DigestUpdate(ctx, line, nread);
- if (_ctx)
- EVP_DigestUpdate(_ctx, line, nread);
- n++;
-@@ -228,7 +229,8 @@ int hdr_digest(tn_stream *st, unsigned c
- break;
- }
-
-- EVP_DigestFinal(&ctx, buf, &n);
-+ EVP_DigestFinal(ctx, buf, &n);
-+ EVP_MD_CTX_destroy(ctx);
-
- if (!endvhdr_found) {
- logn(LOGERR, _("broken index"));
-@@ -251,22 +253,24 @@ static
- int digest(tn_stream *st, unsigned char *md, int *md_size, EVP_MD_CTX *_ctx)
- {
- unsigned char buf[16*1024];
-- EVP_MD_CTX ctx;
-+ EVP_MD_CTX *ctx;
- int n, nn = 0;
-
-
- n_assert(md_size && *md_size);
-
-- EVP_DigestInit(&ctx, EVP_sha1());
-+ ctx = EVP_MD_CTX_create();
-+ EVP_DigestInit(ctx, EVP_sha1());
-
- while ((n = n_stream_read(st, buf, sizeof(buf))) > 0) {
-- EVP_DigestUpdate(&ctx, buf, n);
-+ EVP_DigestUpdate(ctx, buf, n);
- if (_ctx)
- EVP_DigestUpdate(_ctx, buf, n);
- nn += n;
- }
-
-- EVP_DigestFinal(&ctx, buf, &n);
-+ EVP_DigestFinal(ctx, buf, &n);
-+ EVP_MD_CTX_destroy(ctx);
-
- if (n > *md_size) {
- *md = '\0';
-@@ -288,7 +292,7 @@ int pdir_digest_calc(struct pdir_digest
- unsigned char mdh[64], mdd[64], md[64], mdhex[64];
- int mdh_size = sizeof(mdh), mdd_size = sizeof(mdd),
- md_size = sizeof(md);
-- EVP_MD_CTX ctx, *ctxp;
-+ EVP_MD_CTX *ctx, *ctxp;
- int is_err = 0, n;
-
-
-@@ -300,27 +304,34 @@ int pdir_digest_calc(struct pdir_digest
-
- ctxp = NULL;
- if (flags & CALC_MD) {
-- EVP_DigestInit(&ctx, EVP_sha1());
-- ctxp = &ctx;
-+ ctx = EVP_MD_CTX_create();
-+ EVP_DigestInit(ctx, EVP_sha1());
-+ ctxp = ctx;
- }
-
- if ((flags & CALC_MDD) == 0) { /* no separate header && body digests */
- if (!digest(st, mdd, &mdd_size, ctxp)) {
-- if (ctxp)
-- EVP_DigestFinal(&ctx, md, &md_size);
-+ if (ctxp) {
-+ EVP_DigestFinal(ctx, md, &md_size);
-+ EVP_MD_CTX_destroy(ctx);
-+ }
- return 0;
- }
-
- } else {
- if (!hdr_digest(st, mdh, &mdh_size, ctxp)) {
-- if (ctxp)
-- EVP_DigestFinal(&ctx, md, &md_size);
-+ if (ctxp) {
-+ EVP_DigestFinal(ctx, md, &md_size);
-+ EVP_MD_CTX_destroy(ctx);
-+ }
- return 0;
- }
-
- if (!digest(st, mdd, &mdd_size, ctxp)) {
-- if (ctxp)
-- EVP_DigestFinal(&ctx, md, &md_size);
-+ if (ctxp) {
-+ EVP_DigestFinal(ctx, md, &md_size);
-+ EVP_MD_CTX_destroy(ctx);
-+ }
- return 0;
- }
- }
-@@ -336,7 +347,8 @@ int pdir_digest_calc(struct pdir_digest
- }
-
- if (ctxp) {
-- EVP_DigestFinal(&ctx, md, &md_size);
-+ EVP_DigestFinal(ctx, md, &md_size);
-+ EVP_MD_CTX_destroy(ctx);
- n = bin2hex(mdhex, sizeof(mdhex), md, md_size);
- if (n != PDIR_DIGEST_SIZE)
- is_err = 1;
---- poldek-0.32.2/pkgdir/pndir/digest.c~ 2016-01-30 15:05:57.000000000 +0100
-+++ poldek-0.32.2/pkgdir/pndir/digest.c 2018-09-14 18:53:40.521640846 +0200
-@@ -241,12 +241,13 @@ int pndir_digest_calc_pkgs(struct pndir_
- int pndir_digest_calc(struct pndir_digest *pdg, tn_array *keys)
- {
- unsigned char md[256];
-- EVP_MD_CTX ctx;
-+ EVP_MD_CTX *ctx;
- int i, n, nn = 0;
-
-
-- EVP_DigestInit(&ctx, EVP_sha1());
-- EVP_DigestUpdate(&ctx, "md", strlen("md"));
-+ ctx = EVP_MD_CTX_create();
-+ EVP_DigestInit(ctx, EVP_sha1());
-+ EVP_DigestUpdate(ctx, "md", strlen("md"));
-
- if (keys && n_array_size(keys)) {
- n_array_sort(keys);
-@@ -254,11 +255,12 @@ int pndir_digest_calc(struct pndir_diges
- for (i=0; i < n_array_size(keys); i++) {
- char *key = n_array_nth(keys, i);
- DBGF("key = %s\n", key);
-- EVP_DigestUpdate(&ctx, key, strlen(key));
-+ EVP_DigestUpdate(ctx, key, strlen(key));
- }
- }
-
-- EVP_DigestFinal(&ctx, md, &n);
-+ EVP_DigestFinal(ctx, md, &n);
-+ EVP_MD_CTX_destroy(ctx);
-
- if (n > (int)sizeof(pdg->md))
- return 0;
---- poldek-0.32.2/misc.c~ 2016-01-30 15:05:57.000000000 +0100
-+++ poldek-0.32.2/misc.c 2018-09-14 18:55:01.440752874 +0200
-@@ -80,23 +80,25 @@ static
- int mdigest(FILE *stream, unsigned char *md, unsigned *md_size, int digest_type)
- {
- unsigned char buf[8*1024];
-- EVP_MD_CTX ctx;
-+ EVP_MD_CTX *ctx;
- unsigned n, nn = 0;
-
-
- n_assert(md_size && *md_size);
-
-+ ctx = EVP_MD_CTX_create();
- if (digest_type == DIGEST_MD5)
-- EVP_DigestInit(&ctx, EVP_md5());
-+ EVP_DigestInit(ctx, EVP_md5());
- else
-- EVP_DigestInit(&ctx, EVP_sha1());
-+ EVP_DigestInit(ctx, EVP_sha1());
-
- while ((n = fread(buf, 1, sizeof(buf), stream)) > 0) {
-- EVP_DigestUpdate(&ctx, buf, n);
-+ EVP_DigestUpdate(ctx, buf, n);
- nn += n;
- }
-
-- EVP_DigestFinal(&ctx, buf, &n);
-+ EVP_DigestFinal(ctx, buf, &n);
-+ EVP_MD_CTX_destroy(ctx);
-
- if (n > *md_size) {
- *md = '\0';