The dump mode handlers use atoi(), which cannot report an error, so a malformed value is silently taken as zero, which disables dumping entirely rather than being rejected.
Out of range values keep being clamped to the full dump level, as before. Signed-off-by: Stephen Hemminger <[email protected]> --- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 15 ++++++++++++--- drivers/crypto/dpaa_sec/dpaa_sec.c | 17 +++++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 3d980d096f..93e92af6a7 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -4342,13 +4342,22 @@ check_devargs_handler(const char *key, const char *value, if (!strcmp(key, "drv_strict_order")) { priv->en_loose_ordered = false; } else if (!strcmp(key, "drv_dump_mode")) { - dpaa2_sec_dp_dump = atoi(value); - if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_FULL_DUMP) { + uint64_t val; + + if (rte_kvargs_to_uint(value, 0, UINT8_MAX, &val) < 0) { + DPAA2_SEC_WARN("WARN: invalid value \"%s\" for \"%s\"", + value, key); + return -EINVAL; + } + + if (val > DPAA2_SEC_DP_FULL_DUMP) { DPAA2_SEC_WARN("WARN: DPAA2_SEC_DP_DUMP_LEVEL is not " "supported, changing to FULL error" " prints"); - dpaa2_sec_dp_dump = DPAA2_SEC_DP_FULL_DUMP; + val = DPAA2_SEC_DP_FULL_DUMP; } + + dpaa2_sec_dp_dump = val; } else return -1; diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index c53ee70853..3feb752bcd 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -3625,16 +3625,25 @@ dpaa_sec_uninit(struct rte_cryptodev *dev) } static int -check_devargs_handler(__rte_unused const char *key, const char *value, +check_devargs_handler(const char *key, const char *value, __rte_unused void *opaque) { - dpaa_sec_dp_dump = atoi(value); - if (dpaa_sec_dp_dump > DPAA_SEC_DP_FULL_DUMP) { + uint64_t val; + + if (rte_kvargs_to_uint(value, 0, UINT8_MAX, &val) < 0) { + DPAA_SEC_WARN("WARN: invalid value \"%s\" for \"%s\"", + value, key); + return -EINVAL; + } + + if (val > DPAA_SEC_DP_FULL_DUMP) { DPAA_SEC_WARN("WARN: DPAA_SEC_DP_DUMP_LEVEL is not " "supported, changing to FULL error prints"); - dpaa_sec_dp_dump = DPAA_SEC_DP_FULL_DUMP; + val = DPAA_SEC_DP_FULL_DUMP; } + dpaa_sec_dp_dump = val; + return 0; } -- 2.53.0

