summaryrefslogtreecommitdiffstats
path: root/src/expr
diff options
context:
space:
mode:
authorArturo Borrero <arturo.borrero.glez@gmail.com>2014-01-18 17:01:44 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2014-01-18 21:50:22 +0100
commit871c7fd0204325b947a5fde3ab8617ef89b9168f (patch)
tree22988ceef9730a8c41265e619335a7228457ec2c /src/expr
parentcd9a80990abb035fba5810bbeb0ecdff46425d2f (diff)
utils: fix nft_str2verdict return value
Some verdicts have a negative value. The caller of nft_str2verdict() checking if return was < 0 clash with enum nft_verdict. While at it, add error reporting of invalid verdicts. Signed-off-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/expr')
-rw-r--r--src/expr/data_reg.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c
index e487bc7..8812daf 100644
--- a/src/expr/data_reg.c
+++ b/src/expr/data_reg.c
@@ -37,9 +37,12 @@ static int nft_data_reg_verdict_json_parse(union nft_data_reg *reg, json_t *data
if (verdict_str == NULL)
return -1;
- verdict = nft_str2verdict(verdict_str);
- if (verdict < 0)
+ if (nft_str2verdict(verdict_str, &verdict) != 0) {
+ err->node_name = "verdict";
+ err->error = NFT_PARSE_EBADTYPE;
+ errno = EINVAL;
return -1;
+ }
reg->verdict = (uint32_t)verdict;
@@ -118,9 +121,12 @@ static int nft_data_reg_verdict_xml_parse(union nft_data_reg *reg,
if (verdict_str == NULL)
return DATA_NONE;
- verdict = nft_str2verdict(verdict_str);
- if (verdict < 0)
+ if (nft_str2verdict(verdict_str, &verdict) != 0) {
+ err->node_name = "verdict";
+ err->error = NFT_PARSE_EBADTYPE;
+ errno = EINVAL;
return DATA_NONE;
+ }
reg->verdict = (uint32_t)verdict;