[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#751409: patch for endian.h



This patch changes the endian conversion macros in endian.h to cast their result to the unsigned type of the corresponding size (as described in the bug report).
diff -urN eglibc-2.19/string/endian.h eglibc-2.19.mine/string/endian.h
--- eglibc-2.19/string/endian.h	2014-01-03 17:51:28.000000000 +0000
+++ eglibc-2.19.mine/string/endian.h	2014-06-12 15:35:25.192649179 +0000
@@ -58,37 +58,38 @@
 #if defined __USE_BSD && !defined __ASSEMBLER__
 /* Conversion interfaces.  */
 # include <bits/byteswap.h>
+# include <stdint.h>
 
 # if __BYTE_ORDER == __LITTLE_ENDIAN
 #  define htobe16(x) __bswap_16 (x)
-#  define htole16(x) (x)
+#  define htole16(x) (uint16_t)(x)
 #  define be16toh(x) __bswap_16 (x)
-#  define le16toh(x) (x)
+#  define le16toh(x) (uint16_t)(x)
 
 #  define htobe32(x) __bswap_32 (x)
-#  define htole32(x) (x)
+#  define htole32(x) (uint32_t)(x)
 #  define be32toh(x) __bswap_32 (x)
-#  define le32toh(x) (x)
+#  define le32toh(x) (uint32_t)(x)
 
 #  define htobe64(x) __bswap_64 (x)
-#  define htole64(x) (x)
+#  define htole64(x) (uint64_t)(x)
 #  define be64toh(x) __bswap_64 (x)
-#  define le64toh(x) (x)
+#  define le64toh(x) (uint64_t)(x)
 
 # else
-#  define htobe16(x) (x)
+#  define htobe16(x) (uint16_t)(x)
 #  define htole16(x) __bswap_16 (x)
-#  define be16toh(x) (x)
+#  define be16toh(x) (uint16_t)(x)
 #  define le16toh(x) __bswap_16 (x)
 
-#  define htobe32(x) (x)
+#  define htobe32(x) (uint32_t)(x)
 #  define htole32(x) __bswap_32 (x)
-#  define be32toh(x) (x)
+#  define be32toh(x) (uint32_t)(x)
 #  define le32toh(x) __bswap_32 (x)
 
-#  define htobe64(x) (x)
+#  define htobe64(x) (uint64_t)(x)
 #  define htole64(x) __bswap_64 (x)
-#  define be64toh(x) (x)
+#  define be64toh(x) (uint64_t)(x)
 #  define le64toh(x) __bswap_64 (x)
 # endif
 #endif

Attachment: signature.asc
Description: Digital signature


Reply to: