summaryrefslogtreecommitdiffstats
path: root/src/jansson.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2013-07-25 23:22:26 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2013-07-25 23:23:13 +0200
commite4206c8c5b2cfe9dcdf92d3f0379414909dff299 (patch)
tree5f5ece2ab50e09c3f20485542fb6b92338c018bf /src/jansson.c
parentde876873c3818bcab5431297263f107a7225961d (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.c17
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)