crypto: bails out early for unsupported key type 58/27958/3
authorBenoît Ganne <bganne@cisco.com>
Fri, 17 Jul 2020 09:33:19 +0000 (11:33 +0200)
committerDamjan Marion <dmarion@me.com>
Tue, 21 Jul 2020 17:27:47 +0000 (17:27 +0000)
Do not access data structures based on uninitialized key->alg.

Type: fix
Fixes: f539578bac8b64886b57c460c9d74273e6613f8b

Change-Id: I6bfb7e7a51af2c131b8bdf3bca6a38fcf1094760
Signed-off-by: Benoît Ganne <bganne@cisco.com>
src/plugins/crypto_ipsecmb/ipsecmb.c
src/plugins/crypto_native/main.c

index 3c5495a..0501dcc 100644 (file)
@@ -436,6 +436,10 @@ crypto_ipsecmb_key_handler (vlib_main_t * vm, vnet_crypto_key_op_t kop,
   u32 i;
   void *kd;
 
+  /** TODO: add linked alg support **/
+  if (key->type == VNET_CRYPTO_KEY_TYPE_LINK)
+    return;
+
   if (kop == VNET_CRYPTO_KEY_OP_DEL)
     {
       if (idx >= vec_len (imbm->key_data))
@@ -459,10 +463,6 @@ crypto_ipsecmb_key_handler (vlib_main_t * vm, vnet_crypto_key_op_t kop,
       clib_mem_free_s (imbm->key_data[idx]);
     }
 
-  /** TODO: add linked alg support **/
-  if (key->type == VNET_CRYPTO_KEY_TYPE_LINK)
-    return;
-
   kd = imbm->key_data[idx] = clib_mem_alloc_aligned (ad->data_size,
                                                     CLIB_CACHE_LINE_BYTES);
 
index 5d6e647..32bbbb1 100644 (file)
@@ -29,6 +29,10 @@ crypto_native_key_handler (vlib_main_t * vm, vnet_crypto_key_op_t kop,
   vnet_crypto_key_t *key = vnet_crypto_get_key (idx);
   crypto_native_main_t *cm = &crypto_native_main;
 
+  /** TODO: add linked alg support **/
+  if (key->type == VNET_CRYPTO_KEY_TYPE_LINK)
+    return;
+
   if (cm->key_fn[key->alg] == 0)
     return;
 
@@ -45,10 +49,6 @@ crypto_native_key_handler (vlib_main_t * vm, vnet_crypto_key_op_t kop,
       return;
     }
 
-  /** TODO: add linked alg support **/
-  if (key->type == VNET_CRYPTO_KEY_TYPE_LINK)
-    return;
-
   vec_validate_aligned (cm->key_data, idx, CLIB_CACHE_LINE_BYTES);
 
   if (kop == VNET_CRYPTO_KEY_OP_MODIFY && cm->key_data[idx])