[dpdk-dev] app/crypto-perf: fix uninitialized values for null operations

Message ID 1487949960-22048-1-git-send-email-tomaszx.kulasek@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Pablo de Lara Guarch
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Tomasz Kulasek Feb. 24, 2017, 3:26 p.m. UTC
  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>
---
 app/test-crypto-perf/cperf_ops.c          | 16 ++++++++++++++++
 app/test-crypto-perf/cperf_test_vectors.c |  2 +-
 2 files changed, 17 insertions(+), 1 deletion(-)
  

Comments

De Lara Guarch, Pablo March 6, 2017, 2:08 p.m. UTC | #1
> -----Original Message-----
> From: Kulasek, TomaszX
> Sent: Friday, February 24, 2017 3:26 PM
> To: dev@dpdk.org
> Cc: De Lara Guarch, Pablo
> Subject: [PATCH] app/crypto-perf: fix uninitialized values for null operations
> 
> 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>
  
De Lara Guarch, Pablo March 21, 2017, 4:19 p.m. UTC | #2
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of De Lara Guarch,
> Pablo
> Sent: Monday, March 06, 2017 2:08 PM
> To: Kulasek, TomaszX; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] app/crypto-perf: fix uninitialized values for
> null operations
> 
> 
> 
> > -----Original Message-----
> > From: Kulasek, TomaszX
> > Sent: Friday, February 24, 2017 3:26 PM
> > To: dev@dpdk.org
> > Cc: De Lara Guarch, Pablo
> > Subject: [PATCH] app/crypto-perf: fix uninitialized values for null
> operations
> >
> > 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>
> 

Applied to dpdk-next-crypto.
Thanks,

Pablo
  

Patch

diff --git a/app/test-crypto-perf/cperf_ops.c b/app/test-crypto-perf/cperf_ops.c
index b8c0398..1795a37 100644
--- a/app/test-crypto-perf/cperf_ops.c
+++ b/app/test-crypto-perf/cperf_ops.c
@@ -333,6 +333,9 @@ 
 					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 @@ 
 			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 @@ 
 					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 @@ 
 				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 6307f25..f7b3aa9 100644
--- a/app/test-crypto-perf/cperf_test_vectors.c
+++ b/app/test-crypto-perf/cperf_test_vectors.c
@@ -406,7 +406,7 @@  struct cperf_test_vector*
 			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;