Avoid doing unaligned reads when parsing icc files

Offsets are not guaranteed to be aligned, so don't assume that they are.
memcpy instead of just casting and dereferencing.
diff --git a/iccread.c b/iccread.c
index d68bb26..e1aa0fe 100644
--- a/iccread.c
+++ b/iccread.c
@@ -87,7 +87,9 @@
 		invalid_source(mem, "Invalid offset");
 		return 0;
 	} else {
-		return be32_to_cpu(*(__be32*)(mem->buf + offset));
+		__be32 k;
+		memcpy(&k, mem->buf + offset, sizeof(__be32));
+		return be32_to_cpu(k);
 	}
 }
 
@@ -97,7 +99,9 @@
 		invalid_source(mem, "Invalid offset");
 		return 0;
 	} else {
-		return be16_to_cpu(*(__be16*)(mem->buf + offset));
+		__be16 k;
+		memcpy(&k, mem->buf + offset, sizeof(__be16));
+		return be16_to_cpu(k);
 	}
 }