On 2014-11-19 12:27, [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]>
Reviewed-and-Tested-by: Anders Roxell <[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; > -- > 1.7.3.4 > > > _______________________________________________ > lng-odp mailing list > [email protected] > http://lists.linaro.org/mailman/listinfo/lng-odp _______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
