summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiloslav Trmač <mitr@redhat.com>2010-08-06 01:25:17 +0200
committerMiloslav Trmač <mitr@redhat.com>2010-08-24 20:58:31 +0200
commit750e7a6282a4eaf58b5309ece1caedb238d44853 (patch)
tree11d3438634c3374cc2f211a019c81162d0837484
parent086611087534593e8543c193ac12a6b07865be26 (diff)
downloadcryptodev-linux-750e7a6282a4eaf58b5309ece1caedb238d44853.tar.gz
cryptodev-linux-750e7a6282a4eaf58b5309ece1caedb238d44853.tar.xz
cryptodev-linux-750e7a6282a4eaf58b5309ece1caedb238d44853.zip
Use EOVERFLOW if input data is too large
-rw-r--r--userspace/ncrypto_key.c6
-rw-r--r--userspace/ncrypto_params.c6
2 files changed, 9 insertions, 3 deletions
diff --git a/userspace/ncrypto_key.c b/userspace/ncrypto_key.c
index 47d4c94..758ff6f 100644
--- a/userspace/ncrypto_key.c
+++ b/userspace/ncrypto_key.c
@@ -218,8 +218,10 @@ ncr_key_import(ncr_key_t key, void *idata, size_t idata_size, void *id, size_t i
io.key = key;
io.idata = idata;
io.idata_size = idata_size;
- if (id_size > MAX_KEY_ID_SIZE)
- id_size = MAX_KEY_ID_SIZE;
+ if (id_size > MAX_KEY_ID_SIZE) {
+ errno = EOVERFLOW;
+ return -1;
+ }
memmove(&io.key_id, id, id_size);
io.key_id_size = id_size;
io.algorithm = algorithm;
diff --git a/userspace/ncrypto_params.c b/userspace/ncrypto_params.c
index 0bbe0df..d365432 100644
--- a/userspace/ncrypto_params.c
+++ b/userspace/ncrypto_params.c
@@ -33,10 +33,14 @@ ncr_key_params_deinit(ncr_key_params_t params)
int
ncr_key_params_set_cipher_iv(ncr_key_params_t params, void* iv, unsigned int iv_size)
{
- if (!params || (iv_size > NCR_CIPHER_MAX_BLOCK_LEN)) {
+ if (!params) {
errno = EINVAL;
return -1;
}
+ if (iv_size > NCR_CIPHER_MAX_BLOCK_LEN) {
+ errno = EOVERFLOW;
+ return -1;
+ }
memmove(params->params.cipher.iv, iv, iv_size);
params->params.cipher.iv_size = iv_size;
return 0;