summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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