diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/attrs.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/common/attrs.c b/common/attrs.c index b06a342..9f3e522 100644 --- a/common/attrs.c +++ b/common/attrs.c @@ -143,8 +143,13 @@ attrs_build (CK_ATTRIBUTE *attrs, } memcpy (attr, add, sizeof (CK_ATTRIBUTE)); - if (!take_values) - attr->pValue = memdup (attr->pValue, attr->ulValueLen); + if (!take_values && attr->pValue != NULL) { + if (attr->ulValueLen == 0) + attr->pValue = malloc (1); + else + attr->pValue = memdup (attr->pValue, attr->ulValueLen); + return_val_if_fail (attr->pValue != NULL, NULL); + } } /* Mark this as the end */ |