pkcs11-tool: no error when getting sensitive attr. value

resolves PR #807
This commit is contained in:
Viktor Tarasov 2016-06-23 18:51:12 +02:00
parent 3dbcc0b035
commit 76e0e19460

View File

@ -2645,20 +2645,27 @@ get##ATTR(CK_SESSION_HANDLE sess, CK_OBJECT_HANDLE obj) \
static TYPE * \ static TYPE * \
get##ATTR(CK_SESSION_HANDLE sess, CK_OBJECT_HANDLE obj, CK_ULONG_PTR pulCount) \ get##ATTR(CK_SESSION_HANDLE sess, CK_OBJECT_HANDLE obj, CK_ULONG_PTR pulCount) \
{ \ { \
CK_ATTRIBUTE attr = { CKA_##ATTR, NULL, 0 }; \ CK_ATTRIBUTE attr = { CKA_##ATTR, NULL, 0 }; \
CK_RV rv; \ CK_RV rv; \
\ if (pulCount) \
rv = p11->C_GetAttributeValue(sess, obj, &attr, 1); \ *pulCount = 0; \
if (rv == CKR_OK) { \ rv = p11->C_GetAttributeValue(sess, obj, &attr, 1); \
if (!(attr.pValue = calloc(1, attr.ulValueLen + 1))) \ if (rv == CKR_OK) { \
util_fatal("out of memory in get" #ATTR ": %m"); \ if (attr.ulValueLen == (CK_ULONG)(-1)) \
rv = p11->C_GetAttributeValue(sess, obj, &attr, 1); \ return NULL; \
if (pulCount) \ if (!(attr.pValue = calloc(1, attr.ulValueLen + 1))) \
*pulCount = attr.ulValueLen / sizeof(TYPE); \ util_fatal("out of memory in get" #ATTR ": %m"); \
} else {\ rv = p11->C_GetAttributeValue(sess, obj, &attr, 1); \
p11_warn("C_GetAttributeValue(" #ATTR ")", rv); \ if (attr.ulValueLen == (CK_ULONG)(-1)) { \
} \ free(attr.pValue); \
return (TYPE *) attr.pValue; \ return NULL; \
} \
if (pulCount) \
*pulCount = attr.ulValueLen / sizeof(TYPE); \
} else { \
p11_warn("C_GetAttributeValue(" #ATTR ")", rv); \
} \
return (TYPE *) attr.pValue; \
} }
/* /*