I can run a c programm without problems on my Linux Mint system on a other Linux system I get a memory access error.
void digest_message(const unsigned char *message, size_t message_len, unsigned char **digest, unsigned int *digest_len)
{
EVP_MD_CTX *mdctx;
if((mdctx = EVP_MD_CTX_create()) == NULL)
handleErrors();
if(1 != EVP_DigestInit_ex(mdctx, EVP_sha1(), NULL))
handleErrors();
if(1 != EVP_DigestUpdate(mdctx, message, message_len))
handleErrors();
if((*digest = (unsigned char *)OPENSSL_malloc(EVP_MD_size(EVP_sha1()))) == NULL)
handleErrors();
if(1 != EVP_DigestFinal_ex(mdctx, *digest, digest_len))
handleErrors();
EVP_MD_CTX_destroy(mdctx);
}
void main ()
{
...
const unsigned char *message= (const unsigned char*) decryptedtext;
size_t mlen=x;
unsigned char *digest;
unsigned int dlen;
digest_message(message,mlen,&digest,&dlen);
// if i printf in a for loop i get this memmory access error
for(int i=0;i<dlen;i++)
printf("%x ",digest[i]);
}
I tried it with:
printf("%x ",digest[0]);
printf("%x ",digest[1]);
printf("%x ",digest[2]);
...
and got no error
Why does this happen? How can I change it?
Thanks in advance