summaryrefslogtreecommitdiffstats
path: root/tools/net
diff options
context:
space:
mode:
authorJiri Pirko <jiri@nvidia.com>2024-02-15 13:27:26 +0100
committerDavid S. Miller <davem@davemloft.net>2024-02-19 09:45:40 +0000
commitd0bcc15cbae806cad7d1d90003c82ecb5833b533 (patch)
tree27cdfe730f9929ea3df0991beb93bea4f2bcf4e9 /tools/net
parent78e886ba2b549945ecada055ee0765f0ded5707a (diff)
downloadlinux-d0bcc15cbae806cad7d1d90003c82ecb5833b533.tar.gz
linux-d0bcc15cbae806cad7d1d90003c82ecb5833b533.tar.bz2
linux-d0bcc15cbae806cad7d1d90003c82ecb5833b533.zip
tools: ynl: don't access uninitialized attr_space variable
If message contains unknown attribute and user passes "--process-unknown" command line option, _decode() gets called with space arg set to None. In that case, attr_space variable is not initialized used which leads to following trace: Traceback (most recent call last): File "./tools/net/ynl/cli.py", line 77, in <module> main() File "./tools/net/ynl/cli.py", line 68, in main reply = ynl.dump(args.dump, attrs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "tools/net/ynl/lib/ynl.py", line 909, in dump return self._op(method, vals, [], dump=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "tools/net/ynl/lib/ynl.py", line 894, in _op rsp_msg = self._decode(decoded.raw_attrs, op.attr_set.name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "tools/net/ynl/lib/ynl.py", line 639, in _decode self._rsp_add(rsp, attr_name, None, self._decode_unknown(attr)) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "tools/net/ynl/lib/ynl.py", line 569, in _decode_unknown return self._decode(NlAttrs(attr.raw), None) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "tools/net/ynl/lib/ynl.py", line 630, in _decode search_attrs = SpaceAttrs(attr_space, rsp, outer_attrs) ^^^^^^^^^^ UnboundLocalError: cannot access local variable 'attr_space' where it is not associated with a value Fix this by moving search_attrs assignment under the if statement above it to make sure attr_space is initialized. Fixes: bf8b832374fb ("tools/net/ynl: Support sub-messages in nested attribute spaces") Signed-off-by: Jiri Pirko <jiri@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools/net')
-rw-r--r--tools/net/ynl/lib/ynl.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py
index 03c7ca6aaae9..f45ee5f29bed 100644
--- a/tools/net/ynl/lib/ynl.py
+++ b/tools/net/ynl/lib/ynl.py
@@ -588,10 +588,10 @@ class YnlFamily(SpecFamily):
return decoded
def _decode(self, attrs, space, outer_attrs = None):
+ rsp = dict()
if space:
attr_space = self.attr_sets[space]
- rsp = dict()
- search_attrs = SpaceAttrs(attr_space, rsp, outer_attrs)
+ search_attrs = SpaceAttrs(attr_space, rsp, outer_attrs)
for attr in attrs:
try: