From 27362a5bfa4336476038cfe00a699f0b68a984aa Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Mon, 19 Oct 2020 14:45:48 +0200 Subject: rule: larger number of error locations Statically store up to 32 locations per command, if the number of locations is larger than 32, then skip rather than hit assertion. Revisit this later to dynamically store location per command using a hashtable. Signed-off-by: Pablo Neira Ayuso --- src/rule.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/rule.c b/src/rule.c index 4719fd61..e57009b2 100644 --- a/src/rule.c +++ b/src/rule.c @@ -1475,7 +1475,9 @@ struct cmd *cmd_alloc(enum cmd_ops op, enum cmd_obj obj, void cmd_add_loc(struct cmd *cmd, uint16_t offset, struct location *loc) { - assert(cmd->num_attrs < NFT_NLATTR_LOC_MAX); + if (cmd->num_attrs > NFT_NLATTR_LOC_MAX) + return; + cmd->attr[cmd->num_attrs].offset = offset; cmd->attr[cmd->num_attrs].location = loc; cmd->num_attrs++; -- cgit v1.2.3