| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "sandbox/sandbox_poc/pocdll/exports.h" | |
| 6 #include "sandbox/sandbox_poc/pocdll/utils.h" | |
| 7 | |
| 8 // This file contains the tests used to verify the security of the network. | |
| 9 | |
| 10 void POCDLL_API TestNetworkListen(HANDLE log) { | |
| 11 HandleToFile handle2file; | |
| 12 FILE *output = handle2file.Translate(log, "w"); | |
| 13 #if DONT_WANT_INTERCEPTIONS_JUST_WANT_NETWORK | |
| 14 // Initialize Winsock | |
| 15 WSADATA wsa_data; | |
| 16 int result = ::WSAStartup(MAKEWORD(2, 2), &wsa_data); | |
| 17 if (result != NO_ERROR) { | |
| 18 fprintf(output, "[ERROR] Cannot initialize winsock. Error%d\r\n", result); | |
| 19 return; | |
| 20 } | |
| 21 | |
| 22 // Create a SOCKET for listening for | |
| 23 // incoming connection requests. | |
| 24 SOCKET listen_socket; | |
| 25 listen_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); | |
| 26 if (listen_socket == INVALID_SOCKET) { | |
| 27 fprintf(output, "[ERROR] Failed to create socket. Error %ld\r\n", | |
| 28 ::WSAGetLastError()); | |
| 29 ::WSACleanup(); | |
| 30 return; | |
| 31 } | |
| 32 | |
| 33 // The sockaddr_in structure specifies the address family, | |
| 34 // IP address, and port for the socket that is being bound. | |
| 35 sockaddr_in service; | |
| 36 service.sin_family = AF_INET; | |
| 37 service.sin_addr.s_addr = inet_addr("127.0.0.1"); | |
| 38 service.sin_port = htons(88); | |
| 39 | |
| 40 if (bind(listen_socket, reinterpret_cast<SOCKADDR*>(&service), | |
| 41 sizeof(service)) == SOCKET_ERROR) { | |
| 42 fprintf(output, "[BLOCKED] Bind socket on port 88. Error %ld\r\n", | |
| 43 ::WSAGetLastError()); | |
| 44 closesocket(listen_socket); | |
| 45 ::WSACleanup(); | |
| 46 return; | |
| 47 } | |
| 48 | |
| 49 // Listen for incoming connection requests | |
| 50 // on the created socket | |
| 51 if (listen(listen_socket, SOMAXCONN) == SOCKET_ERROR) { | |
| 52 fprintf(output, "[BLOCKED] Listen socket on port 88. Error %ld\r\n", | |
| 53 ::WSAGetLastError()); | |
| 54 | |
| 55 } else { | |
| 56 fprintf(output, "[GRANTED] Listen socket on port 88.\r\n", | |
| 57 ::WSAGetLastError()); | |
| 58 } | |
| 59 | |
| 60 ::WSACleanup(); | |
| 61 return; | |
| 62 #else // DONT_WANT_INTERCEPTIONS_JUST_WANT_NETWORK | |
| 63 // Just print out that this test is not running. | |
| 64 fprintf(output, "[ERROR] No network tests.\r\n"); | |
| 65 #endif // DONT_WANT_INTERCEPTIONS_JUST_WANT_NETWORK | |
| 66 } | |
| OLD | NEW |