diff options
author | Cedric BAIL <cedric.bail@free.fr> | 2013-01-14 03:56:58 +0000 |
---|---|---|
committer | Cedric BAIL <cedric.bail@free.fr> | 2013-01-14 03:56:58 +0000 |
commit | e83542e39d0cae1cc2770bed91a0d8f153576f31 (patch) | |
tree | 2bca3c4e69c5cfd39e1781519eb19ad33761f140 | |
parent | 1803cd1e6a48d5964db5dde568d6c80fa50ffd90 (diff) | |
download | eet-e83542e39d0cae1cc2770bed91a0d8f153576f31.tar.gz |
eet: backport r82743.
SVN revision: 82744
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | NEWS | 7 | ||||
-rw-r--r-- | src/lib/eet_cipher.c | 10 | ||||
-rw-r--r-- | src/lib/eet_image.c | 18 |
4 files changed, 34 insertions, 5 deletions
@@ -672,3 +672,7 @@ 2013-01-05 Joel Klinghed * eet gcrypt cflags build fix. + +2013-01-14 Albin Tonnerre + + * Fix endianness issue in Eet_Image. @@ -1,3 +1,10 @@ +Eet 1.7.6 + +Changes since Eet 1.7.5: +-------------------------- + + * Fix endianess issue in Eet_Image. + Eet 1.7.5 Changes since Eet 1.7.4: diff --git a/src/lib/eet_cipher.c b/src/lib/eet_cipher.c index 3317538..4e1433c 100644 --- a/src/lib/eet_cipher.c +++ b/src/lib/eet_cipher.c @@ -706,9 +706,13 @@ eet_identity_check(const void *data_base, return NULL; /* Get the header */ - magic = ntohl(header[0]); - sign_len = ntohl(header[1]); - cert_len = ntohl(header[2]); + memcpy(&magic, header, sizeof(int)); + memcpy(&sign_len, header+1, sizeof(int)); + memcpy(&cert_len, header+2, sizeof(int)); + + magic = ntohl(magic); + sign_len = ntohl(sign_len); + cert_len = ntohl(cert_len); /* Verify the header */ if (magic != EET_MAGIC_SIGN) diff --git a/src/lib/eet_image.c b/src/lib/eet_image.c index 7116a3c..434f7d9 100644 --- a/src/lib/eet_image.c +++ b/src/lib/eet_image.c @@ -746,13 +746,26 @@ eet_data_image_lossless_compressed_convert(int *size, { unsigned char *d, *comp; - int *header, ret, ok = 1; + int *header, *bigend_data, ret, ok = 1; uLongf buflen = 0; buflen = (((w * h * 101) / 100) + 3) * 4; ret = LZ4_compressBound((w * h * 4)); if ((ret > 0) && ((uLongf)ret > buflen)) buflen = ret; - + + if (_eet_image_words_bigendian) + { + int i; + + bigend_data = (int *) malloc(w * h * 4); + if (!bigend_data) return NULL; + + memcpy(bigend_data, data, w * h * 4); + for (i = 0; i < w * h; i++) SWAP32(bigend_data[i]); + + data = (const char *) bigend_data; + } + comp = malloc(buflen); if (!comp) return NULL; @@ -803,6 +816,7 @@ eet_data_image_lossless_compressed_convert(int *size, unsigned int i; for (i = 0; i < 8; i++) SWAP32(header[i]); + free(bigend_data); } memcpy(d + (8 * sizeof(int)), comp, buflen); |