--- ekg2-20180902/plugins/sim/simlite.c~ 2018-08-01 15:34:40.000000000 +0200 +++ ekg2-20180902/plugins/sim/simlite.c 2018-09-20 20:44:14.370347788 +0200 @@ -185,7 +185,7 @@ char *sim_key_fingerprint(const char *ui RSA *key = sim_key_read(uid, NULL); unsigned char md_value[EVP_MAX_MD_SIZE], *buf, *newbuf; char *result = NULL; - EVP_MD_CTX ctx; + EVP_MD_CTX *ctx; unsigned int md_len; int size, i; @@ -208,10 +208,14 @@ char *sim_key_fingerprint(const char *ui size = i2d_RSAPublicKey(key, &newbuf); else size = i2d_RSAPrivateKey(key, &newbuf); - - EVP_DigestInit(&ctx, EVP_sha1()); - EVP_DigestUpdate(&ctx, buf, size); - EVP_DigestFinal(&ctx, md_value, &md_len); + + ctx = EVP_MD_CTX_create(); + if (!ctx) + return NULL; + EVP_DigestInit(ctx, EVP_sha1()); + EVP_DigestUpdate(ctx, buf, size); + EVP_DigestFinal(ctx, md_value, &md_len); + EVP_MD_CTX_free(ctx); free(buf);