summaryrefslogtreecommitdiffstats
path: root/net/netfilter/nf_conntrack_proto_gre.c
diff options
context:
space:
mode:
authorDavid S. Miller2012-04-02 00:52:03 +0200
committerDavid S. Miller2012-04-02 00:52:03 +0200
commit242ddfc01499e83cd1e65e1dddb8c96b7f2ba2cc (patch)
treea5de3ceb8b1205f6f1eb3cb98fc19e548def3d65 /net/netfilter/nf_conntrack_proto_gre.c
parentnf_conntrack_proto_sctp: Stop using NLA_PUT*(). (diff)
downloadkernel-qcow2-linux-242ddfc01499e83cd1e65e1dddb8c96b7f2ba2cc.tar.gz
kernel-qcow2-linux-242ddfc01499e83cd1e65e1dddb8c96b7f2ba2cc.tar.xz
kernel-qcow2-linux-242ddfc01499e83cd1e65e1dddb8c96b7f2ba2cc.zip
nf_conntrack_proto_gre: 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/netfilter/nf_conntrack_proto_gre.c')
-rw-r--r--net/netfilter/nf_conntrack_proto_gre.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/net/netfilter/nf_conntrack_proto_gre.c b/net/netfilter/nf_conntrack_proto_gre.c
index 659648c4b14a..4bf6b4e4b776 100644
--- a/net/netfilter/nf_conntrack_proto_gre.c
+++ b/net/netfilter/nf_conntrack_proto_gre.c
@@ -321,10 +321,11 @@ gre_timeout_obj_to_nlattr(struct sk_buff *skb, const void *data)
{
const unsigned int *timeouts = data;
- NLA_PUT_BE32(skb, CTA_TIMEOUT_GRE_UNREPLIED,
- htonl(timeouts[GRE_CT_UNREPLIED] / HZ));
- NLA_PUT_BE32(skb, CTA_TIMEOUT_GRE_REPLIED,
- htonl(timeouts[GRE_CT_REPLIED] / HZ));
+ if (nla_put_be32(skb, CTA_TIMEOUT_GRE_UNREPLIED,
+ htonl(timeouts[GRE_CT_UNREPLIED] / HZ)) ||
+ nla_put_be32(skb, CTA_TIMEOUT_GRE_REPLIED,
+ htonl(timeouts[GRE_CT_REPLIED] / HZ)))
+ goto nla_put_failure;
return 0;
nla_put_failure: