X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fipsec%2Fipsec_sa.c;h=8e8546985ecca7c70f7444fbb8a201c70507ca9d;hb=e6be702362299566990678f505512b1b74b49112;hp=46c3b6d3821ca80b809de19236b22e00d8a15a22;hpb=be95444fbb31b875c2ab98cd330fdcb36027ced8;p=vpp.git diff --git a/src/vnet/ipsec/ipsec_sa.c b/src/vnet/ipsec/ipsec_sa.c index 46c3b6d3821..8e8546985ec 100644 --- a/src/vnet/ipsec/ipsec_sa.c +++ b/src/vnet/ipsec/ipsec_sa.c @@ -171,13 +171,19 @@ ipsec_sa_add (u32 id, im->crypto_algs[crypto_alg].alg, (u8 *) ck->data, ck->len); if (~0 == sa->crypto_key_index) - return VNET_API_ERROR_INVALID_VALUE; + { + pool_put (im->sad, sa); + return VNET_API_ERROR_KEY_LENGTH; + } sa->integ_key_index = vnet_crypto_key_add (vm, im->integ_algs[integ_alg].alg, (u8 *) ik->data, ik->len); if (~0 == sa->integ_key_index) - return VNET_API_ERROR_INVALID_VALUE; + { + pool_put (im->sad, sa); + return VNET_API_ERROR_KEY_LENGTH; + } err = ipsec_check_support_cb (im, sa); if (err) @@ -363,7 +369,7 @@ ipsec_set_sa_key (u32 id, const ipsec_key_t * ck, const ipsec_key_t * ik) /* new integ key */ if (ik) { - clib_memcpy (&sa->integ_key, 0, sizeof (sa->integ_key)); + clib_memcpy (&sa->integ_key, ik, sizeof (sa->integ_key)); vnet_crypto_key_modify (vm, sa->integ_key_index, sa->integ_calg, (u8 *) ik->data, ik->len); }