func: static int CVE_2013_7268_PATCHED_ipx_recvmsg(struct kiocb *iocb, struct socket struct msghdr *msg, size_t size, int flags) struct sock * sk = sock -> sk ; struct ipx_sock * ipxs = ipx_sk ( sk ) ; struct sockaddr_ipx * sipx = ( struct sockaddr_ipx * ) msg -> msg_name ; struct sk_buff * skb ; int copied , rc ; if ( ! ipxs -> port )  struct sockaddr_ipx uaddr ; uaddr . sipx_port = 0; uaddr . sipx_network = 0; rc = - ENETDOWN; if ( ! ipxs -> intrfc )  memcpy ( uaddr . sipx_node , ipxs -> intrfc -> if_node , IPX_NODE_LEN ); rc = __ipx_bind ( sock , ( struct sockaddr * ) & uaddr , sizeof ( struct sockaddr_ipx ) ); if ( rc )  if ( sock_flag ( sk , SOCK_ZAPPED ) )  skb = skb_recv_datagram ( sk , flags & ~MSG_DONTWAIT , flags & MSG_DONTWAIT , & rc ); if ( ! skb )  ipx = ipx_hdr ( skb ); copied = ntohs ( ipx -> ipx_pktsize ) - sizeof ( struct ipxhdr ); if ( copied > size )  copied = size; msg -> msg_flags |= MSG_TRUNC; rc = skb_copy_datagram_iovec ( skb , sizeof ( struct ipxhdr ) , msg -> msg_iov , copied ); if ( rc )  if ( sipx )  sipx -> sipx_family = AF_IPX; sipx -> sipx_port = ipx -> ipx_source . sock; memcpy ( sipx -> sipx_node , ipx -> ipx_source . node , IPX_NODE_LEN ); sipx -> sipx_network = IPX_SKB_CB ( skb ) -> ipx_source_net; sipx -> sipx_type = ipx -> ipx_type; sipx -> sipx_zero = 0; msg -> msg_namelen = sizeof ( * sipx ); 