X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_kvargs%2Frte_kvargs.c;h=8d56abd4c8bee40be83c756730693c29ce09b156;hb=8688b18a997ecb8938a4e86f14407967fa1b6a0e;hp=12910841a03caad2248b21bb3fb4f77e432db811;hpb=ac15c813157156b8651cfa5eb75c9122c6a15bbe;p=dpdk.git diff --git a/lib/librte_kvargs/rte_kvargs.c b/lib/librte_kvargs/rte_kvargs.c index 12910841a0..8d56abd4c8 100644 --- a/lib/librte_kvargs/rte_kvargs.c +++ b/lib/librte_kvargs/rte_kvargs.c @@ -48,7 +48,9 @@ static int rte_kvargs_tokenize(struct rte_kvargs *kvlist, const char *params) { unsigned i; - char *str, *ctx1, *ctx2; + char *str; + char *ctx1 = NULL; + char *ctx2 = NULL; /* Copy the const char *params to a modifiable string * to pass to rte_strsplit @@ -94,9 +96,10 @@ is_valid_key(const char *valid[], const char *key_match) { const char **valid_ptr; - for (valid_ptr = valid; *valid_ptr != NULL; valid_ptr++) - if (strstr(key_match, *valid_ptr) != NULL) + for (valid_ptr = valid; *valid_ptr != NULL; valid_ptr++) { + if (strcmp(key_match, *valid_ptr) == 0) return 1; + } return 0; } @@ -138,7 +141,7 @@ rte_kvargs_count(const struct rte_kvargs *kvlist, const char *key_match) ret = 0; for (i = 0; i < kvlist->count; i++) { pair = &kvlist->pairs[i]; - if (strcmp(pair->key, key_match) == 0) + if (key_match == NULL || strcmp(pair->key, key_match) == 0) ret++; } @@ -159,8 +162,8 @@ rte_kvargs_process(const struct rte_kvargs *kvlist, for (i = 0; i < kvlist->count; i++) { pair = &kvlist->pairs[i]; - if (strstr(pair->key, key_match) != NULL) { - if ((*handler)(pair->value, opaque_arg) < 0) + if (key_match == NULL || strcmp(pair->key, key_match) == 0) { + if ((*handler)(pair->key, pair->value, opaque_arg) < 0) return -1; } } @@ -171,8 +174,10 @@ rte_kvargs_process(const struct rte_kvargs *kvlist, void rte_kvargs_free(struct rte_kvargs *kvlist) { - if (kvlist->str != NULL) - free(kvlist->str); + if (!kvlist) + return; + + free(kvlist->str); free(kvlist); }