Thread (13 messages) flat view 13 messages, 5 authors, 2012-02-15

RE: [RFC V2 PATCH] rtnetlink: Fix problem with buffer allocation

From: Rose, Gregory V <hidden>
Date: 2012-02-15 16:31:57

-----Original Message-----
From: Thomas Graf [mailto:tgr@infradead.org] On Behalf Of Thomas Graf
Sent: Wednesday, February 15, 2012 6:08 AM
To: Ben Hutchings
Cc: Rose, Gregory V; netdev@vger.kernel.org; davem@davemloft.net
Subject: Re: [RFC V2 PATCH] rtnetlink: Fix problem with buffer allocation

On Tue, Feb 14, 2012 at 09:13:13PM +0000, Ben Hutchings wrote:
quoted
quoted
+		struct rtattr *ext_req;
+		u32 *ext_req_data;
+		req = (struct rtnl_req_extended *)cb->nlh;
+		ext_req = (struct rtattr *)&req->ext;
+		if (ext_req->rta_type == IFLA_EXT_MASK) {
+			ext_req_data = RTA_DATA(ext_req);
+			ext_filter_mask = *ext_req_data;
+		}
+	}
We cannot trust a flag to tell us what the length of the message is.  We
have to check the value of nlmsg_len (which netlink has already
validated as being within the skb length and >= our declared request
header length).  I think that makes the flag redundant.

In fact, I think we should really use nlmsg_parse() here.  That might be
overkill when there's only a single valid attribute; I don't know.
I think it's worth the effort. You get all the validation for free. And
please use the netlink interface in <net/netlink.h>, the rtattr based
interface has been deprecated a while ago.
Yes, I'm changing it to use nlmsg_parse.  Didn't know about the deprecation of rtattr though, thanks for the tip.

- Greg
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help