Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

caif: 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>

+7 -7
+7 -7
net/caif/chnl_net.c
··· 421 421 struct chnl_net *priv; 422 422 u8 loop; 423 423 priv = netdev_priv(dev); 424 - NLA_PUT_U32(skb, IFLA_CAIF_IPV4_CONNID, 425 - priv->conn_req.sockaddr.u.dgm.connection_id); 426 - NLA_PUT_U32(skb, IFLA_CAIF_IPV6_CONNID, 427 - priv->conn_req.sockaddr.u.dgm.connection_id); 424 + if (nla_put_u32(skb, IFLA_CAIF_IPV4_CONNID, 425 + priv->conn_req.sockaddr.u.dgm.connection_id) || 426 + nla_put_u32(skb, IFLA_CAIF_IPV6_CONNID, 427 + priv->conn_req.sockaddr.u.dgm.connection_id)) 428 + goto nla_put_failure; 428 429 loop = priv->conn_req.protocol == CAIFPROTO_DATAGRAM_LOOP; 429 - NLA_PUT_U8(skb, IFLA_CAIF_LOOPBACK, loop); 430 - 431 - 430 + if (nla_put_u8(skb, IFLA_CAIF_LOOPBACK, loop)) 431 + goto nla_put_failure; 432 432 return 0; 433 433 nla_put_failure: 434 434 return -EMSGSIZE;