I have a function get_digest() which sometimes causes a segmentation
fault, and I cannot figure out why. I use the function in two programs,
in the first one it works fine, but in the second it segfaults. The
strange thing is that it segfaults on the EVP_DigestInit_ex() function,
before the variables passed in are even considered.
Here is the function:
u_char *get_digest(u_char *data, int length, int *outlen)
{
EVP_MD_CTX mdctx;
const EVP_MD *md = EVP_sha1();
int digest_size = EVP_MD_size(md);
u_char *digest;
EVP_MD_CTX_init(&mdctx);
EVP_DigestInit_ex(&mdctx, md, NULL); /* Segfault happens here */
EVP_DigestUpdate(&mdctx, data, length);
digest = malloc(digest_size);
EVP_DigestFinal_ex(&mdctx, digest, outlen);
EVP_MD_CTX_cleanup(&mdctx);
return digest;
}
Here is a (partial) backtrace
#0 0x4108ae47 in mallopt () from /lib/libc.so.6
#1 0x41089e03 in malloc () from /lib/libc.so.6
#2 0x4008eb9b in CRYPTO_get_mem_debug_options ()
from /usr/lib/i686/cmov/libcrypto.so.0.9.7
#3 0x00000064 in ?? ()
#4 0x41016c20 in ?? () from /lib/ld-linux.so.2
#5 0x4000019c in ?? ()
#6 0x4008eb85 in CRYPTO_get_mem_debug_options ()
from /usr/lib/i686/cmov/libcrypto.so.0.9.7
#7 0x4014f0c0 in ?? () from /usr/lib/i686/cmov/libcrypto.so.0.9.7
#8 0x4006c8f8 in ?? () from /usr/lib/i686/cmov/libcrypto.so.0.9.7
#9 0x40061278 in ?? ()
#10 0x41016c20 in ?? () from /lib/ld-linux.so.2
Does anyone know what could be causing this segfault?
Ben
--
Ben <[EMAIL PROTECTED]>
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]