All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: donald.hunter@gmail.com, netdev@vger.kernel.org,
	edumazet@google.com, pabeni@redhat.com, andrew+netdev@lunn.ch,
	horms@kernel.org, daniel@iogearbox.net, sdf@fomichev.me,
	jacob.e.keller@intel.com, Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH net 4/8] tools: ynl-gen: make sure we validate subtype of array-nest
Date: Mon, 14 Apr 2025 14:18:47 -0700	[thread overview]
Message-ID: <20250414211851.602096-5-kuba@kernel.org> (raw)
In-Reply-To: <20250414211851.602096-1-kuba@kernel.org>

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")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
 tools/net/ynl/pyynl/ynl_gen_c.py | 7 +++++--
 1 file 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 @@ from lib import SpecFamily, SpecAttrSet, SpecAttr, SpecOperation, SpecEnumSet, S
     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
 
 
-- 
2.49.0


  parent reply	other threads:[~2025-04-14 21:20 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-14 21:18 [PATCH net 0/8] ynl: avoid leaks in attr override and spec fixes for C Jakub Kicinski
2025-04-14 21:18 ` [PATCH net 1/8] tools: ynl-gen: don't declare loop iterator in place Jakub Kicinski
2025-04-16 10:06   ` Donald Hunter
2025-04-16 13:45     ` Jakub Kicinski
2025-04-16 16:20       ` Keller, Jacob E
2025-04-14 21:18 ` [PATCH net 2/8] tools: ynl-gen: move local vars after the opening bracket Jakub Kicinski
2025-04-16  9:56   ` Donald Hunter
2025-04-14 21:18 ` [PATCH net 3/8] tools: ynl-gen: individually free previous values on double set Jakub Kicinski
2025-04-16 10:06   ` Donald Hunter
2025-04-14 21:18 ` Jakub Kicinski [this message]
2025-04-16 10:07   ` [PATCH net 4/8] tools: ynl-gen: make sure we validate subtype of array-nest Donald Hunter
2025-04-14 21:18 ` [PATCH net 5/8] netlink: specs: rt-link: add an attr layer around alt-ifname Jakub Kicinski
2025-04-16 10:08   ` Donald Hunter
2025-04-14 21:18 ` [PATCH net 6/8] netlink: specs: rtnetlink: attribute naming corrections Jakub Kicinski
2025-04-16 10:09   ` Donald Hunter
2025-04-14 21:18 ` [PATCH net 7/8] netlink: specs: rt-link: adjust mctp attribute naming Jakub Kicinski
2025-04-16 10:10   ` Donald Hunter
2025-04-14 21:18 ` [PATCH net 8/8] netlink: specs: rt-neigh: prefix struct nfmsg members with ndm Jakub Kicinski
2025-04-16 10:11   ` Donald Hunter
2025-04-15 17:39 ` [PATCH net 0/8] ynl: avoid leaks in attr override and spec fixes for C Jacob Keller
2025-04-17  1:21 ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250414211851.602096-5-kuba@kernel.org \
    --to=kuba@kernel.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=donald.hunter@gmail.com \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=jacob.e.keller@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sdf@fomichev.me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.