Merged,
Thanks,
Maxim.
On 11/19/2014 01:27 PM, [email protected] wrote:
From: Alexandru Badicioiu <[email protected]>
NULL session IV prevents using per operation IV (override_iv_ptr).
This fixes *_OVR_IV cunit tests segfaults.
Signed-off-by: Alexandru Badicioiu <[email protected]>
---
platform/linux-generic/odp_crypto.c | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/platform/linux-generic/odp_crypto.c
b/platform/linux-generic/odp_crypto.c
index 596c717..9ca2251 100644
--- a/platform/linux-generic/odp_crypto.c
+++ b/platform/linux-generic/odp_crypto.c
@@ -147,7 +147,7 @@ enum crypto_alg_err des_encrypt(odp_crypto_op_params_t
*params,
{
uint8_t *data = odp_packet_addr(params->out_pkt);
uint32_t len = params->cipher_range.length;
- DES_cblock *iv;
+ DES_cblock *iv = NULL;
DES_cblock iv_temp;
/*
@@ -155,8 +155,10 @@ enum crypto_alg_err des_encrypt(odp_crypto_op_params_t
*params,
* and if we are processing packets on parallel threads
* we could get corruption.
*/
- memcpy(iv_temp, session->cipher.iv.data, sizeof(iv_temp));
- iv = &iv_temp;
+ if (session->cipher.iv.data) {
+ memcpy(iv_temp, session->cipher.iv.data, sizeof(iv_temp));
+ iv = &iv_temp;
+ }
/* Adjust pointer for beginning of area to cipher */
data += params->cipher_range.offset;
@@ -165,6 +167,10 @@ enum crypto_alg_err des_encrypt(odp_crypto_op_params_t
*params,
if (params->override_iv_ptr)
iv = (DES_cblock *)params->override_iv_ptr;
+ /* No session or operation IV */
+ if (!iv)
+ return ODP_CRYPTO_SES_CREATE_ERR_INV_CIPHER;
+
/* Encrypt it */
DES_ede3_cbc_encrypt(data,
data,
@@ -214,10 +220,6 @@ int process_des_params(odp_crypto_generic_session_t
*session,
if (!((0 == params->iv.length) || (8 == params->iv.length)))
return -1;
- /* Verify IV pointer */
- if (params->iv.length && !params->iv.data)
- return -1;
-
/* Set function */
if (ODP_CRYPTO_OP_ENCODE == params->op)
session->cipher.func = des_encrypt;
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp