summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStef Walter <stef@thewalter.net>2014-01-13 17:58:20 +0100
committerStef Walter <stef@thewalter.net>2014-01-13 18:11:33 +0100
commit6bc661e907f5382dbd9a76fb47a3b554c2ea0028 (patch)
tree572ed899b41a221e43cf96b672e941ec51d72315
parent8d5bff64a7050e983c688bb5612bf4046fe96393 (diff)
downloadp11-kit-6bc661e907f5382dbd9a76fb47a3b554c2ea0028.tar.gz
attrs: Allow NULL attribute to be passed to p11_attr_hash()
This allows simpler lookups. https://bugs.freedesktop.org/show_bug.cgi?id=73558
-rw-r--r--common/attrs.c12
-rw-r--r--common/tests/test-attrs.c3
2 files changed, 10 insertions, 5 deletions
diff --git a/common/attrs.c b/common/attrs.c
index 9f3e522..4a3d655 100644
--- a/common/attrs.c
+++ b/common/attrs.c
@@ -508,12 +508,14 @@ unsigned int
p11_attr_hash (const void *data)
{
const CK_ATTRIBUTE *attr = data;
- uint32_t hash;
+ uint32_t hash = 0;
- p11_hash_murmur3 (&hash,
- &attr->type, sizeof (attr->type),
- attr->pValue, (size_t)attr->ulValueLen,
- NULL);
+ if (attr != NULL) {
+ p11_hash_murmur3 (&hash,
+ &attr->type, sizeof (attr->type),
+ attr->pValue, (size_t)attr->ulValueLen,
+ NULL);
+ }
return hash;
}
diff --git a/common/tests/test-attrs.c b/common/tests/test-attrs.c
index 6087191..79895e2 100644
--- a/common/tests/test-attrs.c
+++ b/common/tests/test-attrs.c
@@ -454,6 +454,9 @@ test_hash (void)
assert (p11_attr_hash (&overflow) != hash);
assert (p11_attr_hash (&null) != hash);
assert (p11_attr_hash (&content) != hash);
+
+ hash = p11_attr_hash (NULL);
+ assert (hash == 0);
}
static void