From: Tomasz Kulasek Date: Fri, 24 Feb 2017 15:26:00 +0000 (+0100) Subject: app/crypto-perf: fix uninitialized values for null ops X-Git-Tag: spdx-start~3744 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=884ed3ff8e59f42e90e66e1486b53bcca1128308;p=dpdk.git app/crypto-perf: fix uninitialized values for null ops 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 Acked-by: Pablo de Lara --- diff --git a/app/test-crypto-perf/cperf_ops.c b/app/test-crypto-perf/cperf_ops.c index b8c0398b6a..1795a37e92 100644 --- a/app/test-crypto-perf/cperf_ops.c +++ b/app/test-crypto-perf/cperf_ops.c @@ -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 */ diff --git a/app/test-crypto-perf/cperf_test_vectors.c b/app/test-crypto-perf/cperf_test_vectors.c index 6307f253e7..f7b3aa9abc 100644 --- a/app/test-crypto-perf/cperf_test_vectors.c +++ b/app/test-crypto-perf/cperf_test_vectors.c @@ -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;