diff -up bulk_extractor-1.5.5/plugins/dfxml/src/hash_t.h.openssl11 bulk_extractor-1.5.5/plugins/dfxml/src/hash_t.h --- bulk_extractor-1.5.5/plugins/dfxml/src/hash_t.h.openssl11 2014-09-16 20:34:02.000000000 +0200 +++ bulk_extractor-1.5.5/plugins/dfxml/src/hash_t.h 2017-10-15 13:25:54.154825878 +0200 @@ -189,7 +189,7 @@ inline std::string digest_name<sha512_t> template<const EVP_MD *md(),size_t SIZE> class hash_generator__ { /* generates the hash */ - EVP_MD_CTX mdctx; /* the context for computing the value */ + EVP_MD_CTX * mdctx; /* the context for computing the value */ bool initialized; /* has the context been initialized? */ bool finalized; /* Static function to determine if something is zero */ @@ -208,15 +208,16 @@ public: } void release(){ /* free allocated memory */ if(initialized){ - EVP_MD_CTX_cleanup(&mdctx); + EVP_MD_CTX_free(mdctx); + mdctx = NULL; initialized = false; hashed_bytes = 0; } } void init(){ if(initialized==false){ - EVP_MD_CTX_init(&mdctx); - EVP_DigestInit_ex(&mdctx, md(), NULL); + mdctx = EVP_MD_CTX_new(); + EVP_DigestInit_ex(mdctx, md(), NULL); initialized = true; finalized = false; hashed_bytes = 0; @@ -228,7 +229,7 @@ public: std::cerr << "hashgen_t::update called after finalized\n"; exit(1); } - EVP_DigestUpdate(&mdctx,buf,bufsize); + EVP_DigestUpdate(mdctx,buf,bufsize); hashed_bytes += bufsize; } hash__<md,SIZE> final() { @@ -242,7 +243,7 @@ public: } hash__<md,SIZE> val; unsigned int len = sizeof(val.digest); - EVP_DigestFinal(&mdctx,val.digest,&len); + EVP_DigestFinal(mdctx,val.digest,&len); finalized = true; return val; } diff -up bulk_extractor-1.5.5/src/dfxml/src/hash_t.h.openssl11 bulk_extractor-1.5.5/src/dfxml/src/hash_t.h --- bulk_extractor-1.5.5/src/dfxml/src/hash_t.h.openssl11 2014-09-16 20:34:02.000000000 +0200 +++ bulk_extractor-1.5.5/src/dfxml/src/hash_t.h 2017-10-15 13:21:40.917396494 +0200 @@ -189,7 +189,7 @@ inline std::string digest_name<sha512_t> template<const EVP_MD *md(),size_t SIZE> class hash_generator__ { /* generates the hash */ - EVP_MD_CTX mdctx; /* the context for computing the value */ + EVP_MD_CTX * mdctx; /* the context for computing the value */ bool initialized; /* has the context been initialized? */ bool finalized; /* Static function to determine if something is zero */ @@ -208,15 +208,16 @@ public: } void release(){ /* free allocated memory */ if(initialized){ - EVP_MD_CTX_cleanup(&mdctx); + EVP_MD_CTX_free(mdctx); + mdctx = NULL; initialized = false; hashed_bytes = 0; } } void init(){ if(initialized==false){ - EVP_MD_CTX_init(&mdctx); - EVP_DigestInit_ex(&mdctx, md(), NULL); + mdctx = EVP_MD_CTX_new(); + EVP_DigestInit_ex(mdctx, md(), NULL); initialized = true; finalized = false; hashed_bytes = 0; @@ -228,7 +229,7 @@ public: std::cerr << "hashgen_t::update called after finalized\n"; exit(1); } - EVP_DigestUpdate(&mdctx,buf,bufsize); + EVP_DigestUpdate(mdctx,buf,bufsize); hashed_bytes += bufsize; } hash__<md,SIZE> final() { @@ -242,7 +243,7 @@ public: } hash__<md,SIZE> val; unsigned int len = sizeof(val.digest); - EVP_DigestFinal(&mdctx,val.digest,&len); + EVP_DigestFinal(mdctx,val.digest,&len); finalized = true; return val; }