diff options
author | Phil Sutter <phil@nwl.cc> | 2023-12-13 23:49:53 +0100 |
---|---|---|
committer | Phil Sutter <phil@nwl.cc> | 2024-03-06 15:40:37 +0100 |
commit | 5029136028bff1747860ed770994b8f494c042fc (patch) | |
tree | 5d5b2a294fb00589a9e691617c7eeaaa31b90da1 /src/expr.c | |
parent | 4ed45d7bbbb9f914c934af327ee0271bcc909302 (diff) |
expr: Call expr_ops::set with legal types only
Having the new expr_ops::nftnl_max_attr field in place, the valid range
of attribute type values is known now. Reject illegal ones upfront.
Consequently drop the default case from callbacks' switches which handle
all supported attributes.
Signed-off-by: Phil Sutter <phil@nwl.cc>
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -71,6 +71,9 @@ int nftnl_expr_set(struct nftnl_expr *expr, uint16_t type, case NFTNL_EXPR_NAME: /* cannot be modified */ return 0; default: + if (type < NFTNL_EXPR_BASE || type > expr->ops->nftnl_max_attr) + return -1; + if (expr->ops->set(expr, type, data, data_len) < 0) return -1; } |