https://bugzilla.redhat.com/show_bug.cgi?id=985433
}
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 */
if (callbacks == NULL)
callbacks = p11_dict_get (gl.pin_sources, P11_KIT_PIN_FALLBACK);
- if (callbacks != NULL) {
+ if (callbacks != NULL && callbacks->num) {
snapshot = memdup (callbacks->elem, sizeof (void *) * callbacks->num);
snapshot_count = callbacks->num;
for (i = 0; snapshot && i < snapshot_count; i++)