diff options
author | Jason Evans <jasone@canonware.com> | 2016-02-20 18:23:48 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2016-02-20 18:23:48 (GMT) |
commit | a0aaad1afa8c1c4b30bf15c6b8744084ffc32055 (patch) | |
tree | 55cc2ff4c7341e2460d73afe82ba22f6de2f8789 /test/unit | |
parent | 9f24c944744e91d0cfe1864287ca7a52c16598fa (diff) | |
download | jemalloc-a0aaad1afa8c1c4b30bf15c6b8744084ffc32055.zip jemalloc-a0aaad1afa8c1c4b30bf15c6b8744084ffc32055.tar.gz jemalloc-a0aaad1afa8c1c4b30bf15c6b8744084ffc32055.tar.bz2 |
Handle unaligned keys in hash().
Reported by Christopher Ferris <cferris@google.com>.
Diffstat (limited to 'test/unit')
-rw-r--r-- | test/unit/hash.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/test/unit/hash.c b/test/unit/hash.c index 77a8ced..ea73d70 100644 --- a/test/unit/hash.c +++ b/test/unit/hash.c @@ -59,17 +59,17 @@ hash_variant_string(hash_variant_t variant) } } +#define KEY_SIZE 256 static void -hash_variant_verify(hash_variant_t variant) +hash_variant_verify_key(hash_variant_t variant, uint8_t *key) { const size_t hashbytes = hash_variant_bits(variant) / 8; - uint8_t key[256]; VARIABLE_ARRAY(uint8_t, hashes, hashbytes * 256); VARIABLE_ARRAY(uint8_t, final, hashbytes); unsigned i; uint32_t computed, expected; - memset(key, 0, sizeof(key)); + memset(key, 0, KEY_SIZE); memset(hashes, 0, sizeof(hashes)); memset(final, 0, sizeof(final)); @@ -139,6 +139,19 @@ hash_variant_verify(hash_variant_t variant) hash_variant_string(variant), expected, computed); } +static void +hash_variant_verify(hash_variant_t variant) +{ +#define MAX_ALIGN 16 + uint8_t key[KEY_SIZE + (MAX_ALIGN - 1)]; + unsigned i; + + for (i = 0; i < MAX_ALIGN; i++) + hash_variant_verify_key(variant, &key[i]); +#undef MAX_ALIGN +} +#undef KEY_SIZE + TEST_BEGIN(test_hash_x86_32) { |