func: int CVE_2012_2669_VULN_main(void) int fd , len , sock_opt ; struct cn_msg * message ; struct nlmsghdr * incoming_msg ; struct cn_msg * incoming_cn_msg ; struct hv_kvp_msg * hv_msg ; char * p ; char * key_value ; fd = socket ( AF_NETLINK , SOCK_DGRAM , NETLINK_CONNECTOR ); message = ( struct cn_msg * ) kvp_send_buffer; message -> id . idx = CN_KVP_IDX; message -> id . val = CN_KVP_VAL; hv_msg = ( struct hv_kvp_msg * ) message -> data; hv_msg -> kvp_hdr . operation = KVP_OP_REGISTER; message -> ack = 0; message -> len = sizeof ( struct hv_kvp_msg ); len = netlink_send ( fd , message ); while ( 1 )  len = recv ( fd , kvp_recv_buffer , sizeof ( kvp_recv_buffer ) , 0 ); if ( len < 0 )  incoming_msg = ( struct nlmsghdr * ) kvp_recv_buffer; incoming_cn_msg = ( struct cn_msg * ) NLMSG_DATA ( incoming_msg ); hv_msg = ( struct hv_kvp_msg * ) incoming_cn_msg -> data; switch ( hv_msg -> kvp_hdr . operation )  p = ( char * ) hv_msg -> body . kvp_register . version; lic_version = malloc ( strlen ( p ) + 1 ); if ( lic_version )  strcpy ( lic_version , p ); if ( kvp_key_add_or_modify ( hv_msg -> kvp_hdr . pool , hv_msg -> body . kvp_set . data . key , hv_msg -> body . kvp_set . data . key_size , hv_msg -> body . kvp_set . data . value , hv_msg -> body . kvp_set . data . value_size ) )  strcpy ( hv_msg -> body . kvp_set . data . key , "" ); if ( kvp_get_value ( hv_msg -> kvp_hdr . pool , hv_msg -> body . kvp_set . data . key , hv_msg -> body . kvp_set . data . key_size , hv_msg -> body . kvp_set . data . value , hv_msg -> body . kvp_set . data . value_size ) )  strcpy ( hv_msg -> body . kvp_set . data . key , "" ); if ( kvp_key_delete ( hv_msg -> kvp_hdr . pool , hv_msg -> body . kvp_delete . key , hv_msg -> body . kvp_delete . key_size ) )  strcpy ( hv_msg -> body . kvp_delete . key , "" ); if ( hv_msg -> kvp_hdr . operation != KVP_OP_ENUMERATE )  if ( hv_msg -> kvp_hdr . pool != KVP_POOL_AUTO )  hv_msg = ( struct hv_kvp_msg * ) incoming_cn_msg -> data; key_value = ( char * ) hv_msg -> body . kvp_enum_data . data . value; switch ( hv_msg -> body . kvp_enum_data . index )  strcpy ( key_value , lic_version ); strcpy ( key_value , os_build ); strcpy ( key_value , os_name ); incoming_cn_msg -> id . idx = CN_KVP_IDX; incoming_cn_msg -> id . val = CN_KVP_VAL; incoming_cn_msg -> ack = 0; incoming_cn_msg -> len = sizeof ( struct hv_kvp_msg ); 