I'm not much of an expert with any of this, but you may want to look at some of the return values of some of the functions to make sure everything is good, such as on EVP_EncryptFinal. Please take a look at some code I did up last summer in C++ (but it is almost all C), located at http://lunir.com/Encryption.cpp. The Function in particular would be int Encryption::encrypt(std::ifstream &istream, std::ofstream &ostream). It deals with streams but converts it all into cstrings, so it should roughtly be the same. Hope this helps.

--
Matthew Clarkson

On Mon, 30 Jan 2006, Felix Dorner wrote:

Hi,

the following code executes once, and does fine. Calling the function a
second time gives a segfault during the call marked by "-->"

unsigned char *encrypt_message(unsigned char *message, int inl, int *outl)
{
       EVP_CIPHER_CTX ctx;
       EVP_CIPHER_CTX_init(&ctx);
       -->EVP_EncryptInit(&ctx, EVP_bf_ecb(), NULL, NULL);
       EVP_CIPHER_CTX_set_key_length(&ctx, SHA_DIGEST_LENGTH);
       EVP_EncryptInit(&ctx, NULL, k, NULL);
       char *ret;
       int tmp, ol;
       ol = 0;
       ret = (char *)malloc(inl + EVP_CIPHER_CTX_block_size(&ctx));
       EVP_EncryptUpdate(&ctx, &ret[ol], &tmp, message, inl);
       ol = tmp;
       EVP_EncryptFinal(&ctx, &ret[ol], &tmp);
       *outl = ol+tmp;
       return ret;
}


Anything obvious that might lead to the segfault?

Thanks,
Felix
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to