summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2019-08-14 13:45:19 +0200
committerFlorian Westphal <fw@strlen.de>2019-08-14 15:28:00 +0200
commit452e7653334bd2808441fe40235307f1f3dd23c4 (patch)
tree116069ff59ff10d45df3306e2609018d053e32a8
parent03956c54c85d97c3eb415fac19eddd9fa4932353 (diff)
src: json: fix constant parsing on bigendian
json restore is broken on big-endian because we errounously passed uint8_t with 64 bit size indicator. On bigendian, this causes all values to get shifted by 56 bit, this will then cause the eval step to bail because all values are outside of the 8bit 0-255 protocol range. Signed-off-by: Florian Westphal <fw@strlen.de> Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--src/parser_json.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/parser_json.c b/src/parser_json.c
index d42bab70..a969bd4c 100644
--- a/src/parser_json.c
+++ b/src/parser_json.c
@@ -304,7 +304,7 @@ static struct expr *json_parse_constant(struct json_ctx *ctx, const char *name)
return constant_expr_alloc(int_loc,
constant_tbl[i].dtype,
BYTEORDER_HOST_ENDIAN,
- 8 * BITS_PER_BYTE,
+ BITS_PER_BYTE,
&constant_tbl[i].data);
}
json_error(ctx, "Unknown constant '%s'.", name);