app/testpmd: fix hex string parser in flow commands
authorViacheslav Ovsiienko <viacheslavo@nvidia.com>
Wed, 13 Oct 2021 18:45:15 +0000 (21:45 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 14 Oct 2021 12:34:31 +0000 (14:34 +0200)
The hexadecimal string parser does not check the target
field buffer size, buffer overflow happens and might
cause the application failure (segmentation fault
is observed usually).

Fixes: 169a9fed1f4c ("app/testpmd: fix hex string parser support for flow API")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
app/test-pmd/cmdline_flow.c

index 6d9e3d5..a90822b 100644 (file)
@@ -7381,10 +7381,13 @@ parse_hex(struct context *ctx, const struct token *token,
                hexlen -= 2;
        }
        if (hexlen > length)
-               return -1;
+               goto error;
        ret = parse_hex_string(str, hex_tmp, &hexlen);
        if (ret < 0)
                goto error;
+       /* Check the converted binary fits into data buffer. */
+       if (hexlen > size)
+               goto error;
        /* Let parse_int() fill length information first. */
        ret = snprintf(tmp, sizeof(tmp), "%u", hexlen);
        if (ret < 0)