Skip to content

Commit a249c4d

Browse files
author
Greg Beaver
committed
MFB: fix getting/setting of all 16/32 bit on zip
1 parent 99ce24d commit a249c4d

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

ext/phar/zip.c

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,19 @@
1919
#include "phar_internal.h"
2020

2121
#ifdef WORDS_BIGENDIAN
22-
# define PHAR_GET_32(buffer) (((((unsigned char*)(buffer))[3]) << 24) \
23-
| ((((unsigned char*)(buffer))[2]) << 16) \
24-
| ((((unsigned char*)(buffer))[1]) << 8) \
25-
| (((unsigned char*)(buffer))[0]))
26-
# define PHAR_GET_16(buffer) (((((unsigned char*)(buffer))[1]) << 8) \
27-
| (((unsigned char*)(buffer))[0]))
22+
static inline php_uint32 phar_fix_32(php_uint32 buffer)
23+
{
24+
return ((((unsigned char *)&buffer)[3]) << 24) |
25+
((((unsigned char *)&buffer)[2]) << 16) |
26+
((((unsigned char *)&buffer)[1]) << 8) |
27+
(((unsigned char *)&buffer)[0]);
28+
}
29+
static inline php_uint16 phar_fix_16(php_uint16 buffer)
30+
{
31+
return ((((unsigned char *)&buffer)[1]) << 8) | ((unsigned char *)&buffer)[0];
32+
}
33+
# define PHAR_GET_32(buffer) phar_fix_32((php_uint32)(buffer))
34+
# define PHAR_GET_16(buffer) phar_fix_16((php_uint16)(buffer))
2835
# define PHAR_SET_32(buffer) PHAR_GET_32(buffer)
2936
# define PHAR_SET_16(buffer) PHAR_GET_16(buffer)
3037
#else

0 commit comments

Comments
 (0)