@@ -50,8 +50,14 @@ STATUS md5DigestCalculation(PBYTE inputStringBuff, UINT64 length, PBYTE outputBu
50
50
#if (OPENSSL_VERSION_NUMBER >= 0x30000000L )
51
51
EVP_MD_CTX * mdctx = NULL ;
52
52
const EVP_MD * md = NULL ;
53
+ #endif
54
+
55
+ CHK_ERR (inputStringBuff != NULL && outputBuff != NULL , STATUS_INVALID_ARG , "Invalid input or output buffer" );
56
+
57
+ #if (OPENSSL_VERSION_NUMBER >= 0x30000000L )
58
+
53
59
CHK_ERR (md = EVP_MD_fetch (NULL , "MD5" , NULL ), STATUS_INTERNAL_ERROR , "Failed to fetch MD5 provider" );
54
- mdctx = EVP_MD_CTX_new ();
60
+ CHK_ERR ( mdctx = EVP_MD_CTX_new (), STATUS_INTERNAL_ERROR , "Failed to create message digest context" );
55
61
CHK_ERR (EVP_DigestInit_ex (mdctx , md , NULL ), STATUS_INTERNAL_ERROR , "Message digest initialization failed." );
56
62
CHK_ERR (EVP_DigestUpdate (mdctx , inputStringBuff , length ), STATUS_INTERNAL_ERROR , "Message digest update failed" );
57
63
CHK_ERR (EVP_DigestFinal_ex (mdctx , outputBuff , NULL ), STATUS_INTERNAL_ERROR , "Message digest finalization failed" );
@@ -61,11 +67,12 @@ STATUS md5DigestCalculation(PBYTE inputStringBuff, UINT64 length, PBYTE outputBu
61
67
62
68
CleanUp :
63
69
#if (OPENSSL_VERSION_NUMBER >= 0x30000000L )
64
- EVP_MD_CTX_free (mdctx );
65
- EVP_MD_free ((EVP_MD * ) md );
66
- // Adding else to get around Mac unused label error
67
- #else
68
- retStatus = STATUS_SUCCESS ;
70
+ if (mdctx != NULL ) {
71
+ EVP_MD_CTX_free (mdctx );
72
+ }
73
+ if (md != NULL ) {
74
+ EVP_MD_free ((EVP_MD * ) md );
75
+ }
69
76
#endif
70
77
return retStatus ;
71
78
}
0 commit comments