diff options
author | David S. Miller <davem@davemloft.net> | 2012-04-01 18:46:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-04-01 18:46:29 -0400 |
commit | 7c8011895330d3069b137233e2673f40ee6f4c91 (patch) | |
tree | abf379d520d4935e70e8bb3b6aec1429e61c313c /net | |
parent | 48f03bdad8b3b0f5a96db45d517149eccd7f4ca8 (diff) |
nfnetlink_acct: Stop using NLA_PUT*().
These macros contain a hidden goto, and are thus extremely error
prone and make code hard to audit.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/netfilter/nfnetlink_acct.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/net/netfilter/nfnetlink_acct.c b/net/netfilter/nfnetlink_acct.c index d98c868c148b..b2e7310ca0b8 100644 --- a/net/netfilter/nfnetlink_acct.c +++ b/net/netfilter/nfnetlink_acct.c | |||
@@ -109,7 +109,8 @@ nfnl_acct_fill_info(struct sk_buff *skb, u32 pid, u32 seq, u32 type, | |||
109 | nfmsg->version = NFNETLINK_V0; | 109 | nfmsg->version = NFNETLINK_V0; |
110 | nfmsg->res_id = 0; | 110 | nfmsg->res_id = 0; |
111 | 111 | ||
112 | NLA_PUT_STRING(skb, NFACCT_NAME, acct->name); | 112 | if (nla_put_string(skb, NFACCT_NAME, acct->name)) |
113 | goto nla_put_failure; | ||
113 | 114 | ||
114 | if (type == NFNL_MSG_ACCT_GET_CTRZERO) { | 115 | if (type == NFNL_MSG_ACCT_GET_CTRZERO) { |
115 | pkts = atomic64_xchg(&acct->pkts, 0); | 116 | pkts = atomic64_xchg(&acct->pkts, 0); |
@@ -118,9 +119,10 @@ nfnl_acct_fill_info(struct sk_buff *skb, u32 pid, u32 seq, u32 type, | |||
118 | pkts = atomic64_read(&acct->pkts); | 119 | pkts = atomic64_read(&acct->pkts); |
119 | bytes = atomic64_read(&acct->bytes); | 120 | bytes = atomic64_read(&acct->bytes); |
120 | } | 121 | } |
121 | NLA_PUT_BE64(skb, NFACCT_PKTS, cpu_to_be64(pkts)); | 122 | if (nla_put_be64(skb, NFACCT_PKTS, cpu_to_be64(pkts)) || |
122 | NLA_PUT_BE64(skb, NFACCT_BYTES, cpu_to_be64(bytes)); | 123 | nla_put_be64(skb, NFACCT_BYTES, cpu_to_be64(bytes)) || |
123 | NLA_PUT_BE32(skb, NFACCT_USE, htonl(atomic_read(&acct->refcnt))); | 124 | nla_put_be32(skb, NFACCT_USE, htonl(atomic_read(&acct->refcnt)))) |
125 | goto nla_put_failure; | ||
124 | 126 | ||
125 | nlmsg_end(skb, nlh); | 127 | nlmsg_end(skb, nlh); |
126 | return skb->len; | 128 | return skb->len; |