fix
authorOlivier Matz <olivier.matz@6wind.com>
Wed, 25 Mar 2020 16:20:37 +0000 (17:20 +0100)
committerOlivier Matz <olivier.matz@6wind.com>
Wed, 25 Mar 2020 16:32:20 +0000 (17:32 +0100)
app/test/test_kvargs.c
lib/librte_kvargs/rte_kvargs.c

index f823b77..2a2dae4 100644 (file)
@@ -217,6 +217,7 @@ static int test_invalid_kvargs(void)
                "foo=1,=2",        /* no key */
                "foo=[1,2",        /* no closing bracket in value */
                ",=",              /* also test with a smiley */
+               "foo=[",           /* no value in list and no closing bracket */
                NULL };
        const char **args;
        const char *valid_keys_list[] = { "foo", "check", NULL };
index d393329..1d815dc 100644 (file)
@@ -50,6 +50,8 @@ rte_kvargs_tokenize(struct rte_kvargs *kvlist, const char *params)
                        /* Find the end of the list. */
                        while (str[strlen(str) - 1] != ']') {
                                /* Restore the comma erased by strtok_r(). */
+                               if (ctx1[0] == '\0')
+                                       return -1; /* no closing bracket */
                                str[strlen(str)] = ',';
                                /* Parse until next comma. */
                                str = strtok_r(NULL, RTE_KVARGS_PAIRS_DELIM, &ctx1);