app/crypto-perf: avoid wrong operation type for AEAD algos

When somebody use bad --optype with aead algorithms
segmentation fault could happen.

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

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
This commit is contained in:
Daniel Mrzyglod 2017-03-08 18:03:25 +01:00 committed by Pablo de Lara
parent 5d75fb09d3
commit 5e66937631
3 changed files with 17 additions and 2 deletions

View File

@ -643,6 +643,17 @@ cperf_options_check(struct cperf_options *options)
}
}
if (options->cipher_algo == RTE_CRYPTO_CIPHER_AES_GCM ||
options->cipher_algo == RTE_CRYPTO_CIPHER_AES_CCM ||
options->auth_algo == RTE_CRYPTO_AUTH_AES_GCM ||
options->auth_algo == RTE_CRYPTO_AUTH_AES_CCM ||
options->auth_algo == RTE_CRYPTO_AUTH_AES_GMAC) {
if (options->op_type != CPERF_AEAD) {
RTE_LOG(ERR, USER1, "Use --optype aead\n");
return -EINVAL;
}
}
return 0;
}

View File

@ -118,7 +118,8 @@ cperf_verify_devices_capabilities(struct cperf_options *opts,
if (opts->op_type == CPERF_AUTH_ONLY ||
opts->op_type == CPERF_CIPHER_THEN_AUTH ||
opts->op_type == CPERF_AUTH_THEN_CIPHER) {
opts->op_type == CPERF_AUTH_THEN_CIPHER ||
opts->op_type == CPERF_AEAD) {
cap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;
cap_idx.algo.auth = opts->auth_algo;
@ -139,7 +140,8 @@ cperf_verify_devices_capabilities(struct cperf_options *opts,
if (opts->op_type == CPERF_CIPHER_ONLY ||
opts->op_type == CPERF_CIPHER_THEN_AUTH ||
opts->op_type == CPERF_AUTH_THEN_CIPHER) {
opts->op_type == CPERF_AUTH_THEN_CIPHER ||
opts->op_type == CPERF_AEAD) {
cap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
cap_idx.algo.cipher = opts->cipher_algo;

View File

@ -181,6 +181,8 @@ The following are the appication command-line options:
auth-then-cipher
aead
For GCM/CCM algorithms you should use aead flag.
* ``--sessionless``
Enable session-less crypto operations mode.