func: void bad() wchar_t * data ; wchar_t dataBuffer [ 100 ] = L "" data = dataBuffer; CWE78_OS_Command_Injection__wchar_t_connect_socket_w32spawnl_84_bad * badObject = new CWE78_OS_Command_Injection__wchar_t_connect_socket_w32spawnl_84_bad ( data ) ; CWE78_OS_Command_Injection__wchar_t_connect_socket_w32spawnl_84_bad::CWE78_OS_Command_Injection__wchar_t_connect_socket_w32spawnl_84_bad(wchar_t * dataCopy) data = dataCopy; WSADATA wsaData ; int wsaDataInit = 0 ; int recvResult ; struct sockaddr_in service ; wchar_t * replace ; SOCKET connectSocket = INVALID_SOCKET ; size_t dataLen = wcslen ( data ) ; if ( WSAStartup ( MAKEWORD ( 2 , 2 ) , & wsaData ) != NO_ERROR )  break ; wsaDataInit = 1; connectSocket = socket ( AF_INET , SOCK_STREAM , IPPROTO_TCP ); if ( connectSocket == INVALID_SOCKET )  break ; memset ( & service , 0 , sizeof ( service ) ); service . sin_family = AF_INET; service . sin_addr . s_addr = inet_addr ( IP_ADDRESS ); service . sin_port = htons ( TCP_PORT ); if ( connect ( connectSocket , ( struct sockaddr * ) & service , sizeof ( service ) ) == SOCKET_ERROR )  break ; recvResult = recv ( connectSocket , ( char * ) ( data + dataLen ) , sizeof ( wchar_t ) * ( 100 - dataLen - 1 ) , 0 ); if ( recvResult == SOCKET_ERROR || recvResult == 0 )  break ; data [ dataLen + recvResult / sizeof ( wchar_t ) ] = L '\0' replace = wcschr ( data , L '\r' ) if ( replace )  * replace = L '\0' replace = wcschr ( data , L '\n' ) if ( replace )  * replace = L '\0' while ( 0 )  if ( connectSocket != INVALID_SOCKET )  CLOSE_SOCKET ( connectSocket ); if ( wsaDataInit )  WSACleanup ( ); delete badObject CWE78_OS_Command_Injection__wchar_t_connect_socket_w32spawnl_84_bad::~CWE78_OS_Command_Injection__wchar_t_connect_socket_w32spawnl_84_bad() _wspawnl ( _P_WAIT , COMMAND_INT_PATH , COMMAND_INT_PATH , COMMAND_ARG1 , COMMAND_ARG2 , COMMAND_ARG3 , NULL ); 