summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric.bail@free.fr>2013-01-14 03:56:58 +0000
committerCedric BAIL <cedric.bail@free.fr>2013-01-14 03:56:58 +0000
commite83542e39d0cae1cc2770bed91a0d8f153576f31 (patch)
tree2bca3c4e69c5cfd39e1781519eb19ad33761f140
parent1803cd1e6a48d5964db5dde568d6c80fa50ffd90 (diff)
downloadeet-e83542e39d0cae1cc2770bed91a0d8f153576f31.tar.gz
eet: backport r82743.
SVN revision: 82744
-rw-r--r--ChangeLog4
-rw-r--r--NEWS7
-rw-r--r--src/lib/eet_cipher.c10
-rw-r--r--src/lib/eet_image.c18
4 files changed, 34 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 806bf00..1af6112 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/NEWS b/NEWS
index fcd321a..07c4564 100644
--- a/NEWS
+++ b/NEWS
@@ -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);