summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric.bail@free.fr>2010-11-18 10:30:53 +0000
committerCedric BAIL <cedric.bail@free.fr>2010-11-18 10:30:53 +0000
commit2d4813d1f8869ae954dabd7eb9d8d1e021f9549b (patch)
tree78340340c7b82436fc5f635560b74d45afe8279e
parent300ecafc641c4fcf0172cb036dbc6f9c88d0c1ed (diff)
downloadeet-2d4813d1f8869ae954dabd7eb9d8d1e021f9549b.tar.gz
* eet: correctly handle length of ciphered/compressed data.
SVN revision: 54683
-rw-r--r--src/lib/eet_lib.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/lib/eet_lib.c b/src/lib/eet_lib.c
index 82aad09..758757a 100644
--- a/src/lib/eet_lib.c
+++ b/src/lib/eet_lib.c
@@ -1802,15 +1802,21 @@ eet_read_cipher(Eet_File *ef,
unsigned int data_deciphered_sz = 0;
/* if we already have the data in ram... copy that */
+ if (efn->ciphered && efn->size > size)
+ {
+ size = efn->size;
+ data = realloc(data, efn->size);
+ }
+
if (efn->data)
- memcpy(data, efn->data, efn->size);
+ memcpy(data, efn->data, size);
else
- if (!read_data_from_disk(ef, efn, data, size))
- goto on_error;
+ if (!read_data_from_disk(ef, efn, data, size))
+ goto on_error;
if (efn->ciphered && cipher_key)
{
- if (eet_decipher(data, size, cipher_key, strlen(cipher_key),
+ if (eet_decipher(data, efn->size, cipher_key, strlen(cipher_key),
&data_deciphered, &data_deciphered_sz))
{
if (data_deciphered)