]> granicus.if.org Git - p11-kit/commitdiff
Fix testing of murmur hash on bigendian systems
authorStef Walter <stefw@gnome.org>
Mon, 25 Mar 2013 20:16:28 +0000 (21:16 +0100)
committerStef Walter <stefw@gnome.org>
Mon, 25 Mar 2013 20:17:05 +0000 (21:17 +0100)
The murmur hash produces different output depending on the architecture

https://bugzilla.redhat.com/show_bug.cgi?id=927394

common/tests/test-hash.c

index c8694e178484b5f3ac90ab4319c72a1c2c35ffc3..a1cb9174cb2b729e4ed7adc6fcb73e0b7ddd54f9 100644 (file)
@@ -135,44 +135,30 @@ test_md5 (CuTest *cu)
 static void
 test_murmur2 (CuTest *cu)
 {
-       struct {
-               const char *input;
-               const char *input2;
-               int hash;
-       } fixtures[] = {
-               { "one", NULL, 1910179066 },
-               { "two", NULL, 396151652 },
-               { "four", NULL, -2034170174 },
-               { "seven", NULL, -588341181 },
-               /* Note that these are identical output */
-               { "eleven", NULL, -37856894 },
-               { "ele", "ven", -37856894 },
-               { NULL },
-       };
-
-       uint32_t first;
-       uint32_t second;
-       int i;
+       uint32_t one, two, four, seven, eleven, split;
 
-       assert (sizeof (first) == P11_HASH_MURMUR2_LEN);
-       for (i = 0; fixtures[i].input != NULL; i++) {
-               p11_hash_murmur2 ((unsigned char *)&first,
-                                 fixtures[i].input,
-                                 strlen (fixtures[i].input),
-                                 fixtures[i].input2,
-                                 fixtures[i].input2 ? strlen (fixtures[i].input2) : 0,
-                                 NULL);
-
-               p11_hash_murmur2 ((unsigned char *)&second,
-                                 fixtures[i].input,
-                                 strlen (fixtures[i].input),
-                                 fixtures[i].input2,
-                                 fixtures[i].input2 ? strlen (fixtures[i].input2) : 0,
-                                 NULL);
-
-               CuAssertIntEquals (cu, fixtures[i].hash, first);
-               CuAssertIntEquals (cu, fixtures[i].hash, second);
-       }
+       assert (sizeof (one) == P11_HASH_MURMUR2_LEN);
+
+       p11_hash_murmur2 ((unsigned char *)&one, "one", 3, NULL);
+       p11_hash_murmur2 ((unsigned char *)&two, "two", 3, NULL);
+       p11_hash_murmur2 ((unsigned char *)&four, "four", 4, NULL);
+       p11_hash_murmur2 ((unsigned char *)&seven, "seven", 5, NULL);
+       p11_hash_murmur2 ((unsigned char *)&eleven, "eleven", 6, NULL);
+       p11_hash_murmur2 ((unsigned char *)&split, "ele", 3, "ven", 3, NULL);
+
+       CuAssertTrue (cu, one != two);
+       CuAssertTrue (cu, one != four);
+       CuAssertTrue (cu, one != seven);
+       CuAssertTrue (cu, one != eleven);
+
+       CuAssertTrue (cu, two != four);
+       CuAssertTrue (cu, two != seven);
+       CuAssertTrue (cu, two != eleven);
+
+       CuAssertTrue (cu, four != seven);
+       CuAssertTrue (cu, four != eleven);
+
+       CuAssertTrue (cu, split == eleven);
 }
 
 static void