|
@@ -1985,19 +1985,18 @@ typedef struct MD5Context {
|
|
unsigned char in[64];
|
|
unsigned char in[64];
|
|
} MD5_CTX;
|
|
} MD5_CTX;
|
|
|
|
|
|
-#if defined(__BYTE_ORDER) && (__BYTE_ORDER == 1234)
|
|
|
|
-#define byteReverse(buf, len) // Do nothing
|
|
|
|
-#else
|
|
|
|
static void byteReverse(unsigned char *buf, unsigned longs) {
|
|
static void byteReverse(unsigned char *buf, unsigned longs) {
|
|
|
|
+ static const int endianess_check = 1;
|
|
uint32_t t;
|
|
uint32_t t;
|
|
- do {
|
|
|
|
- t = (uint32_t) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
|
|
|
|
- ((unsigned) buf[1] << 8 | buf[0]);
|
|
|
|
- *(uint32_t *) buf = t;
|
|
|
|
- buf += 4;
|
|
|
|
- } while (--longs);
|
|
|
|
|
|
+ if (((char *) &endianess_check)[0] == 1) {
|
|
|
|
+ do {
|
|
|
|
+ t = (uint32_t) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
|
|
|
|
+ ((unsigned) buf[1] << 8 | buf[0]);
|
|
|
|
+ * (uint32_t *) buf = t;
|
|
|
|
+ buf += 4;
|
|
|
|
+ } while (--longs);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-#endif
|
|
|
|
|
|
|
|
#define F1(x, y, z) (z ^ (x & (y ^ z)))
|
|
#define F1(x, y, z) (z ^ (x & (y ^ z)))
|
|
#define F2(x, y, z) F1(z, x, y)
|
|
#define F2(x, y, z) F1(z, x, y)
|
|
@@ -3622,18 +3621,23 @@ static void handle_propfind(struct mg_connection *conn, const char *path,
|
|
#if defined(__sun)
|
|
#if defined(__sun)
|
|
#include "solarisfixes.h"
|
|
#include "solarisfixes.h"
|
|
#endif
|
|
#endif
|
|
|
|
+
|
|
|
|
+union char64long16 { unsigned char c[64]; uint32_t l[16]; };
|
|
|
|
+
|
|
#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
|
|
#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
|
|
-#if BYTE_ORDER == LITTLE_ENDIAN
|
|
|
|
-#define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
|
|
|
|
- |(rol(block->l[i],8)&0x00FF00FF))
|
|
|
|
-#elif BYTE_ORDER == BIG_ENDIAN
|
|
|
|
-#define blk0(i) block->l[i]
|
|
|
|
-#else
|
|
|
|
-#error "Endianness not defined!"
|
|
|
|
-#endif
|
|
|
|
|
|
+
|
|
|
|
+static uint32_t blk0(union char64long16 *block, int i) {
|
|
|
|
+ static const int endianess_check = 1;
|
|
|
|
+ if (((char *) &endianess_check)[0] == 1) {
|
|
|
|
+ block->l[i] = (rol(block->l[i], 24) & 0xFF00FF00) |
|
|
|
|
+ (rol(block->l[i], 8) & 0x00FF00FF);
|
|
|
|
+ }
|
|
|
|
+ return block->l[i];
|
|
|
|
+}
|
|
|
|
+
|
|
#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
|
|
#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
|
|
^block->l[(i+2)&15]^block->l[i&15],1))
|
|
^block->l[(i+2)&15]^block->l[i&15],1))
|
|
-#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);
|
|
|
|
|
|
+#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(block, i)+0x5A827999+rol(v,5);w=rol(w,30);
|
|
#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
|
|
#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
|
|
#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
|
|
#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
|
|
#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
|
|
#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
|
|
@@ -3647,9 +3651,8 @@ typedef struct {
|
|
|
|
|
|
static void SHA1Transform(uint32_t state[5], const unsigned char buffer[64]) {
|
|
static void SHA1Transform(uint32_t state[5], const unsigned char buffer[64]) {
|
|
uint32_t a, b, c, d, e;
|
|
uint32_t a, b, c, d, e;
|
|
- typedef union { unsigned char c[64]; uint32_t l[16]; } CHAR64LONG16;
|
|
|
|
|
|
+ union char64long16 block[1];
|
|
|
|
|
|
- CHAR64LONG16 block[1];
|
|
|
|
memcpy(block, buffer, 64);
|
|
memcpy(block, buffer, 64);
|
|
a = state[0];
|
|
a = state[0];
|
|
b = state[1];
|
|
b = state[1];
|