opr: Make opr_uuid_hash endian-independent 95/12495/2
authorAnders Kaseorg <andersk@mit.edu>
Fri, 16 Dec 2016 07:43:48 +0000 (02:43 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 22 Dec 2016 21:02:03 +0000 (16:02 -0500)
And also make sure it doesn’t use unaligned accesses.  Fixes a ‘make
check’ failure on big-endian architectures.

Change-Id: I490174f8d1eecb5f20969b4ef12ff16d0dd3806a
Reviewed-on: https://gerrit.openafs.org/12495
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Tested-by: Michael Meffie <mmeffie@sinenomine.net>

src/opr/uuid.c

index 493c660..6a22ca3 100644 (file)
@@ -58,9 +58,7 @@ opr_uuid_equal(const opr_uuid_t *uuid1, const opr_uuid_t *uuid2)
 unsigned int
 opr_uuid_hash(const opr_uuid_t *uuid)
 {
-   /* uuid->data is a (unsigned char *), so there's every danger that this
-    * may cause an unaligned access on some platforms */
-   return opr_jhash((const afs_uint32 *)uuid->data, 4, 0);
+   return opr_jhash_opaque(uuid->data, sizeof(uuid->data), 0);
 }
 
 #if !defined(KERNEL)