app/crypto-perf: fix uninitialized values for null ops
authorTomasz Kulasek <tomaszx.kulasek@intel.com>
Fri, 24 Feb 2017 15:26:00 +0000 (16:26 +0100)
committerPablo de Lara <pablo.de.lara.guarch@intel.com>
Wed, 5 Apr 2017 22:17:44 +0000 (00:17 +0200)
Some values are uninitialized for "cipher null" and "auth null"
operations. It may cause unpredictable results for some crypto pmd
drivers, or even segmentation fault.

This patch sets values for null operations to zero.

Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test application")

Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
app/test-crypto-perf/cperf_ops.c
app/test-crypto-perf/cperf_test_vectors.c

index b8c0398..1795a37 100644 (file)
@@ -333,6 +333,9 @@ cperf_create_session(uint8_t dev_id,
                                        test_vector->cipher_key.data;
                        cipher_xform.cipher.key.length =
                                        test_vector->cipher_key.length;
+               } else {
+                       cipher_xform.cipher.key.data = NULL;
+                       cipher_xform.cipher.key.length = 0;
                }
                /* create crypto session */
                sess = rte_cryptodev_sym_session_create(dev_id, &cipher_xform);
@@ -354,6 +357,11 @@ cperf_create_session(uint8_t dev_id,
                        auth_xform.auth.key.length =
                                        test_vector->auth_key.length;
                        auth_xform.auth.key.data = test_vector->auth_key.data;
+               } else {
+                       auth_xform.auth.digest_length = 0;
+                       auth_xform.auth.add_auth_data_length = 0;
+                       auth_xform.auth.key.length = 0;
+                       auth_xform.auth.key.data = NULL;
                }
                /* create crypto session */
                sess =  rte_cryptodev_sym_session_create(dev_id, &auth_xform);
@@ -378,6 +386,9 @@ cperf_create_session(uint8_t dev_id,
                                        test_vector->cipher_key.data;
                        cipher_xform.cipher.key.length =
                                        test_vector->cipher_key.length;
+               } else {
+                       cipher_xform.cipher.key.data = NULL;
+                       cipher_xform.cipher.key.length = 0;
                }
 
                /*
@@ -404,6 +415,11 @@ cperf_create_session(uint8_t dev_id,
                                auth_xform.auth.key.data =
                                                test_vector->auth_key.data;
                        }
+               } else {
+                       auth_xform.auth.digest_length = 0;
+                       auth_xform.auth.add_auth_data_length = 0;
+                       auth_xform.auth.key.length = 0;
+                       auth_xform.auth.key.data = NULL;
                }
 
                /* create crypto session for aes gcm */
index 6307f25..f7b3aa9 100644 (file)
@@ -406,7 +406,7 @@ cperf_test_vector_get_dummy(struct cperf_options *options)
                        options->op_type == CPERF_AUTH_THEN_CIPHER ||
                        options->op_type == CPERF_AEAD) {
                if (options->cipher_algo == RTE_CRYPTO_CIPHER_NULL) {
-                       t_vec->cipher_key.length = -1;
+                       t_vec->cipher_key.length = 0;
                        t_vec->ciphertext.data = plaintext;
                        t_vec->cipher_key.data = NULL;
                        t_vec->iv.data = NULL;