diff options
| author | Jakub Kicinski <[email protected]> | 2025-04-14 21:18:47 +0000 |
|---|---|---|
| committer | Jakub Kicinski <[email protected]> | 2025-04-17 01:09:41 +0000 |
| commit | 57e7dedf2b8c72caa6f04b9e08b19e4f370562fa (patch) | |
| tree | 2862de6ae62eeca73eb10395f79737ac5cca31c5 /tools/net/ynl/pyynl/ynl_gen_c.py | |
| parent | tools: ynl-gen: individually free previous values on double set (diff) | |
| download | kernel-57e7dedf2b8c72caa6f04b9e08b19e4f370562fa.tar.gz kernel-57e7dedf2b8c72caa6f04b9e08b19e4f370562fa.zip | |
tools: ynl-gen: make sure we validate subtype of array-nest
ArrayNest AKA indexed-array support currently skips inner type
validation. We count the attributes and then we parse them,
make sure we call validate, too. Otherwise buggy / unexpected
kernel response may lead to crashes.
Fixes: be5bea1cc0bf ("net: add basic C code generators for Netlink")
Reviewed-by: Donald Hunter <[email protected]>
Reviewed-by: Jacob Keller <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
Diffstat (limited to 'tools/net/ynl/pyynl/ynl_gen_c.py')
| -rwxr-xr-x | tools/net/ynl/pyynl/ynl_gen_c.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen_c.py index 2d856ccc88f4..30c0a34b2784 100755 --- a/tools/net/ynl/pyynl/ynl_gen_c.py +++ b/tools/net/ynl/pyynl/ynl_gen_c.py @@ -714,8 +714,11 @@ class TypeArrayNest(Type): def _attr_get(self, ri, var): local_vars = ['const struct nlattr *attr2;'] get_lines = [f'attr_{self.c_name} = attr;', - 'ynl_attr_for_each_nested(attr2, attr)', - f'\t{var}->n_{self.c_name}++;'] + 'ynl_attr_for_each_nested(attr2, attr) {', + '\tif (ynl_attr_validate(yarg, attr2))', + '\t\treturn YNL_PARSE_CB_ERROR;', + f'\t{var}->n_{self.c_name}++;', + '}'] return get_lines, None, local_vars |
