func: static int CVE_2010_3848_PATCHED_econet_sendmsg(struct kiocb *iocb, struct socket struct msghdr *msg, size_t len) struct sock * sk = sock -> sk ; struct sockaddr_ec * saddr = ( struct sockaddr_ec * ) msg -> msg_name ; struct net_device * dev ; struct ec_addr addr ; struct sockaddr_in udpdest ; if ( msg -> msg_flags & ~ ( MSG_DONTWAIT | MSG_CMSG_COMPAT ) )  if ( saddr == NULL )  struct econet_sock * eo = ec_sk ( sk ) ; addr . station = eo -> station; addr . net = eo -> net; if ( msg -> msg_namelen < sizeof ( struct sockaddr_ec ) )  addr . station = saddr -> addr . station; addr . net = saddr -> addr . net; dev = net2dev_map [ addr . net ]; if ( dev == NULL )  dev = net2dev_map [ 0 ]; if ( dev == NULL )  if ( dev -> type == ARPHRD_ECONET )  if ( udpsock == NULL )  if ( len > 32768 )  memset ( & udpdest , 0 , sizeof ( udpdest ) ); udpdest . sin_family = AF_INET; udpdest . sin_port = htons ( AUN_PORT ); udpdest . sin_addr . s_addr = htonl ( network | addr . station ); udpmsg . msg_name = ( void * ) & udpdest; udpmsg . msg_namelen = sizeof ( udpdest ); udpmsg . msg_iov = & iov [ 0 ]; udpmsg . msg_iovlen = 2; udpmsg . msg_control = NULL; udpmsg . msg_controllen = 0; udpmsg . msg_flags = 0; err = sock_sendmsg ( udpsock , & udpmsg , size ); return err ; 