summaryrefslogtreecommitdiff
path: root/common/attrs.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/attrs.c')
-rw-r--r--common/attrs.c9
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 */