diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-07-25 23:22:26 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-07-25 23:23:13 +0200 |
commit | e4206c8c5b2cfe9dcdf92d3f0379414909dff299 (patch) | |
tree | 5f5ece2ab50e09c3f20485542fb6b92338c018bf /src/jansson.c | |
parent | de876873c3818bcab5431297263f107a7225961d (diff) |
table: json: fix returned errno value while parsing
Instead of returning ERANGE all the time, let functions set
errno accordingly and set EINVAL otherwise.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/jansson.c')
-rw-r--r-- | src/jansson.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/jansson.c b/src/jansson.c index 2b15240..cc68ae0 100644 --- a/src/jansson.c +++ b/src/jansson.c @@ -31,14 +31,11 @@ static int nft_jansson_load_int_node(json_t *root, const char *tag, if (!json_is_integer(node)) { errno = ERANGE; - goto err; + return -1; } - *val = json_integer_value(node); return 0; -err: - return -1; } const char *nft_jansson_value_parse_str(json_t *root, const char *tag) @@ -47,9 +44,10 @@ const char *nft_jansson_value_parse_str(json_t *root, const char *tag) const char *val; node = json_object_get(root, tag); - if (node == NULL) + if (node == NULL) { + errno = EINVAL; return NULL; - + } val = json_string_value(node); return val; @@ -61,15 +59,12 @@ int nft_jansson_value_parse_val(json_t *root, const char *tag, int type, json_int_t val; if (nft_jansson_load_int_node(root, tag, &val) == -1) - goto err; + return -1; if (nft_get_value(type, &val, out) == -1) - goto err; + return -1; return 0; -err: - errno = ERANGE; - return -1; } bool nft_jansson_node_exist(json_t *root, const char *tag) |