diff options
-rw-r--r-- | common/attrs.c | 12 | ||||
-rw-r--r-- | common/tests/test-attrs.c | 3 |
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 |