diff options
author | Cedric BAIL <cedric.bail@free.fr> | 2010-11-18 10:30:53 +0000 |
---|---|---|
committer | Cedric BAIL <cedric.bail@free.fr> | 2010-11-18 10:30:53 +0000 |
commit | 2d4813d1f8869ae954dabd7eb9d8d1e021f9549b (patch) | |
tree | 78340340c7b82436fc5f635560b74d45afe8279e | |
parent | 300ecafc641c4fcf0172cb036dbc6f9c88d0c1ed (diff) | |
download | eet-2d4813d1f8869ae954dabd7eb9d8d1e021f9549b.tar.gz |
* eet: correctly handle length of ciphered/compressed data.
SVN revision: 54683
-rw-r--r-- | src/lib/eet_lib.c | 14 |
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) |