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/win/sandbox_poc/pocdll/exports.h" | |
6 #include "sandbox/win/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 |