Patch by Leandro Sansilva.
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eet@72906
7cbeb6ba-43b4-40fd-8cce-
4c39aea84d33
Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Lionel Orry <lionel.orry@gmail.com>
Jérôme Pinot <ngc891@gmail.com>
Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Lionel Orry <lionel.orry@gmail.com>
Jérôme Pinot <ngc891@gmail.com>
2012-05-30 Cedric Bail
* Check that gnutls and openssl don't return below zero size during decipher.
2012-05-30 Cedric Bail
* Check that gnutls and openssl don't return below zero size during decipher.
+
+2012-06-27 Leandro Sansilva
+
+ * Fix crash when cyphering huge amount of data.
* Force destruction of all pending file when shuting down eet.
* Make eet_dictionary thread safe.
* Check that gnutls and openssl don't return below zero size during decipher.
* Force destruction of all pending file when shuting down eet.
* Make eet_dictionary thread safe.
* Check that gnutls and openssl don't return below zero size during decipher.
+ * Fix crash when cyphering huge amount of data.
# else /* ifdef HAVE_GNUTLS */
/* Openssl declarations*/
EVP_CIPHER_CTX ctx;
# else /* ifdef HAVE_GNUTLS */
/* Openssl declarations*/
EVP_CIPHER_CTX ctx;
+ unsigned int *buffer = NULL;
int tmp_len;
# endif /* ifdef HAVE_GNUTLS */
int tmp_len;
# endif /* ifdef HAVE_GNUTLS */
/* Gcrypt close the cipher */
gcry_cipher_close(cipher);
# else /* ifdef HAVE_GNUTLS */
/* Gcrypt close the cipher */
gcry_cipher_close(cipher);
# else /* ifdef HAVE_GNUTLS */
- buffer = alloca(crypted_length);
+ buffer = malloc(crypted_length);
+ if (!buffer) goto on_error;
*buffer = tmp;
memcpy(buffer + 1, data, size);
*buffer = tmp;
memcpy(buffer + 1, data, size);
goto on_error;
EVP_CIPHER_CTX_cleanup(&ctx);
goto on_error;
EVP_CIPHER_CTX_cleanup(&ctx);
# endif /* ifdef HAVE_GNUTLS */
/* Set return values */
# endif /* ifdef HAVE_GNUTLS */
/* Set return values */
if (opened)
EVP_CIPHER_CTX_cleanup(&ctx);
if (opened)
EVP_CIPHER_CTX_cleanup(&ctx);
# endif /* ifdef HAVE_GNUTLS */
/* General error */
free(ret);
# endif /* ifdef HAVE_GNUTLS */
/* General error */
free(ret);