[v1] app/testpmd: fix dereference before null check
Checks
Commit Message
Assign 'left' variable only after null check on 'size'
as function returns if 'size' is null.
Coverity issue: 374381
Fixes: 169a9fed1f4 ("app/testpmd: fix hex string parser support for flow API")
Cc: stable@dpdk.org
Cc: wei.zhao1@intel.com
Signed-off-by: Sean Morrissey <sean.morrissey@intel.com>
---
app/test-pmd/cmdline_flow.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Comments
On 12/9/2021 4:27 PM, Sean Morrissey wrote:
> Assign 'left' variable only after null check on 'size'
> as function returns if 'size' is null.
>
> Coverity issue: 374381
> Fixes: 169a9fed1f4 ("app/testpmd: fix hex string parser support for flow API")
> Cc: stable@dpdk.org
> Cc: wei.zhao1@intel.com
>
> Signed-off-by: Sean Morrissey <sean.morrissey@intel.com>
> ---
> app/test-pmd/cmdline_flow.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> index bbe3dc0115..5bb7abcced 100644
> --- a/app/test-pmd/cmdline_flow.c
> +++ b/app/test-pmd/cmdline_flow.c
> @@ -7702,7 +7702,6 @@ parse_string(struct context *ctx, const struct token *token,
> static int
> parse_hex_string(const char *src, uint8_t *dst, uint32_t *size)
> {
> - uint32_t left = *size;
> const uint8_t *head = dst;
>
> /* Check input parameters */
> @@ -7712,6 +7711,8 @@ parse_hex_string(const char *src, uint8_t *dst, uint32_t *size)
> (*size == 0))
> return -1;
>
> + uint32_t left = *size;
> +
Hi Sean,
Change looks good but can you please move variable declaration to the beginning
of the scope, like:
uint32_t left;
<null checks>
left = *size;
With above change,
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Please keep the tag in next version.
@@ -7702,7 +7702,6 @@ parse_string(struct context *ctx, const struct token *token,
static int
parse_hex_string(const char *src, uint8_t *dst, uint32_t *size)
{
- uint32_t left = *size;
const uint8_t *head = dst;
/* Check input parameters */
@@ -7712,6 +7711,8 @@ parse_hex_string(const char *src, uint8_t *dst, uint32_t *size)
(*size == 0))
return -1;
+ uint32_t left = *size;
+
/* Convert chars to bytes */
while (left) {
char tmp[3], *end = tmp;