ynl: ensure exact-len value is resolved
For type String and Binary we are currently usinig the exact-len limit value as is without attempting any name resolution. However, the spec may specify the name of a constant rather than an actual value, which would result in using the constant name as is and thus break the policy. Ensure the limit value is passed to get_limit(), which will always attempt resolving the name before printing the policy rule. Signed-off-by: Antonio Quartulli <a@unstable.cc> Link: https://lore.kernel.org/r/20240510232202.24051-1-a@unstable.cc Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
e5a280261c
commit
ec8c25746e
|
@ -413,7 +413,7 @@ class TypeString(Type):
|
|||
|
||||
def _attr_policy(self, policy):
|
||||
if 'exact-len' in self.checks:
|
||||
mem = 'NLA_POLICY_EXACT_LEN(' + str(self.checks['exact-len']) + ')'
|
||||
mem = 'NLA_POLICY_EXACT_LEN(' + str(self.get_limit('exact-len')) + ')'
|
||||
else:
|
||||
mem = '{ .type = ' + policy
|
||||
if 'max-len' in self.checks:
|
||||
|
@ -465,7 +465,7 @@ class TypeBinary(Type):
|
|||
|
||||
def _attr_policy(self, policy):
|
||||
if 'exact-len' in self.checks:
|
||||
mem = 'NLA_POLICY_EXACT_LEN(' + str(self.checks['exact-len']) + ')'
|
||||
mem = 'NLA_POLICY_EXACT_LEN(' + str(self.get_limit('exact-len')) + ')'
|
||||
else:
|
||||
mem = '{ '
|
||||
if len(self.checks) == 1 and 'min-len' in self.checks:
|
||||
|
|
Loading…
Reference in New Issue