summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/lib/pkcs11/pkcs11_softtoken/common/softDecryptUtil.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softDecryptUtil.c b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softDecryptUtil.c
index 63bc9e10ed..7b912c68ce 100644
--- a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softDecryptUtil.c
+++ b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softDecryptUtil.c
@@ -48,6 +48,7 @@ soft_remove_pkcs7_padding(CK_BYTE *pData, CK_ULONG padded_len,
{
CK_BYTE pad_value;
+ ulong_t i;
pad_value = pData[padded_len - 1];
@@ -56,6 +57,10 @@ soft_remove_pkcs7_padding(CK_BYTE *pData, CK_ULONG padded_len,
if ((pad_value == 0) || (pad_value > block_size))
return (CKR_ENCRYPTED_DATA_INVALID);
+ for (i = padded_len - pad_value; i < padded_len; i++)
+ if (pad_value != pData[i])
+ return (CKR_ENCRYPTED_DATA_INVALID);
+
*pulDataLen = padded_len - pad_value;
return (CKR_OK);
}