]> git.sur5r.net Git - bacula/bacula/commitdiff
check endianness at runtime in md5.c
authorLorenz Schori <lo@znerol.ch>
Tue, 8 Sep 2009 08:40:47 +0000 (10:40 +0200)
committerEric Bollengier <eric@eb.homelinux.org>
Tue, 8 Sep 2009 18:18:38 +0000 (20:18 +0200)
Signed-off-by: Eric Bollengier <eric@eb.homelinux.org>
bacula/src/lib/md5.c

index 26532fbf0f3a1355aeb38a24d337d0031208f9ac..05f49acb9b879326b2c9e05be8ba46c00aa6ec55 100644 (file)
 
 #include "bacula.h"
 
-#ifndef HAVE_BIGENDIAN
-#define byteReverse(buf, len)   /* Nothing */
-#else
 /*
- * Note: this code is harmless on little-endian machines.
+ * Note: this code is harmless on little-endian machines. We'll swap the bytes
+ * on big-endian machines.
  */
 void byteReverse(unsigned char *buf, unsigned longs)
 {
     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 (htonl(1) == 1L) {
+        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
 
 /*
  * Start MD5 accumulation.  Set bit count to 0 and buffer to mysterious