Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssh/src/canohost.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | - | |||||||||||||
5 | - | |||||||||||||
6 | - | |||||||||||||
7 | - | |||||||||||||
8 | - | |||||||||||||
9 | - | |||||||||||||
10 | - | |||||||||||||
11 | - | |||||||||||||
12 | - | |||||||||||||
13 | void | - | ||||||||||||
14 | ipv64_normalise_mapped(struct sockaddr_storage *addr, socklen_t *len) | - | ||||||||||||
15 | { | - | ||||||||||||
16 | struct sockaddr_in6 *a6 = (struct sockaddr_in6 *)addr; | - | ||||||||||||
17 | struct sockaddr_in *a4 = (struct sockaddr_in *)addr; | - | ||||||||||||
18 | struct in_addr inaddr; | - | ||||||||||||
19 | u_int16_t port; | - | ||||||||||||
20 | - | |||||||||||||
21 | if (addr->ss_family !=
| 0 | ||||||||||||
22 | 10
| 0 | ||||||||||||
23 | || | - | ||||||||||||
24 | !
| 0 | ||||||||||||
25 | (__extension__ ({ const struct in6_addr *__a = (const struct in6_addr *) (
| 0 | ||||||||||||
26 | &a6->sin6_addr
| 0 | ||||||||||||
27 | ); __a->__in6_u.__u6_addr32[0] == 0 && __a->__in6_u.__u6_addr32[1] == 0 && __a->__in6_u.__u6_addr32[2] == __bswap_32 (0xffff); }))
| 0 | ||||||||||||
28 | ) | - | ||||||||||||
29 | return; never executed: return; | 0 | ||||||||||||
30 | - | |||||||||||||
31 | debug3("Normalising mapped IPv4 in IPv6 address"); | - | ||||||||||||
32 | - | |||||||||||||
33 | memcpy(&inaddr, ((char *)&a6->sin6_addr) + 12, sizeof(inaddr)); | - | ||||||||||||
34 | port = a6->sin6_port; | - | ||||||||||||
35 | - | |||||||||||||
36 | memset(a4, 0, sizeof(*a4)); | - | ||||||||||||
37 | - | |||||||||||||
38 | a4->sin_family = | - | ||||||||||||
39 | 2 | - | ||||||||||||
40 | ; | - | ||||||||||||
41 | *len = sizeof(*a4); | - | ||||||||||||
42 | memcpy(&a4->sin_addr, &inaddr, sizeof(inaddr)); | - | ||||||||||||
43 | a4->sin_port = port; | - | ||||||||||||
44 | } never executed: end of block | 0 | ||||||||||||
45 | - | |||||||||||||
46 | - | |||||||||||||
47 | - | |||||||||||||
48 | - | |||||||||||||
49 | - | |||||||||||||
50 | static char * | - | ||||||||||||
51 | get_socket_address(int sock, int remote, int flags) | - | ||||||||||||
52 | { | - | ||||||||||||
53 | struct sockaddr_storage addr; | - | ||||||||||||
54 | socklen_t addrlen; | - | ||||||||||||
55 | char ntop[ | - | ||||||||||||
56 | 1025 | - | ||||||||||||
57 | ]; | - | ||||||||||||
58 | int r; | - | ||||||||||||
59 | - | |||||||||||||
60 | - | |||||||||||||
61 | addrlen = sizeof(addr); | - | ||||||||||||
62 | memset(&addr, 0, sizeof(addr)); | - | ||||||||||||
63 | - | |||||||||||||
64 | if (remote
| 0 | ||||||||||||
65 | if (getpeername(sock, (struct sockaddr *)&addr, &addrlen) != 0
| 0 | ||||||||||||
66 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
67 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
68 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
69 | } never executed: else {end of block | 0 | ||||||||||||
70 | if (getsockname(sock, (struct sockaddr *)&addr, &addrlen) != 0
| 0 | ||||||||||||
71 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
72 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
73 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
74 | } never executed: end of block | 0 | ||||||||||||
75 | - | |||||||||||||
76 | - | |||||||||||||
77 | if (addr.ss_family ==
| 0 | ||||||||||||
78 | 10
| 0 | ||||||||||||
79 | ) { | - | ||||||||||||
80 | addrlen = sizeof(struct sockaddr_in6); | - | ||||||||||||
81 | ipv64_normalise_mapped(&addr, &addrlen); | - | ||||||||||||
82 | } never executed: end of block | 0 | ||||||||||||
83 | - | |||||||||||||
84 | switch (addr.ss_family) { | - | ||||||||||||
85 | case never executed: case 2 : never executed: case 2 : | 0 | ||||||||||||
86 | 2 never executed: case 2 : | 0 | ||||||||||||
87 | : never executed: case 2 : | 0 | ||||||||||||
88 | case never executed: case 10 : never executed: case 10 : | 0 | ||||||||||||
89 | 10 never executed: case 10 : | 0 | ||||||||||||
90 | : never executed: case 10 : | 0 | ||||||||||||
91 | - | |||||||||||||
92 | if ((
| 0 | ||||||||||||
93 | sizeof(ntop),
| 0 | ||||||||||||
94 | ((void *)0)
| 0 | ||||||||||||
95 | , 0, flags)) != 0
| 0 | ||||||||||||
96 | error("%s: getnameinfo %d failed: %s", __func__, | - | ||||||||||||
97 | flags, ssh_gai_strerror(r)); | - | ||||||||||||
98 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
99 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
100 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
101 | } | - | ||||||||||||
102 | return never executed: xstrdup(ntop);return xstrdup(ntop); never executed: return xstrdup(ntop); | 0 | ||||||||||||
103 | case never executed: case 1 : never executed: case 1 : | 0 | ||||||||||||
104 | 1 never executed: case 1 : | 0 | ||||||||||||
105 | : never executed: case 1 : | 0 | ||||||||||||
106 | - | |||||||||||||
107 | return never executed: xstrdup(((struct sockaddr_un *)&addr)->sun_path);return xstrdup(((struct sockaddr_un *)&addr)->sun_path); never executed: return xstrdup(((struct sockaddr_un *)&addr)->sun_path); | 0 | ||||||||||||
108 | default never executed: :default: never executed: default: | 0 | ||||||||||||
109 | - | |||||||||||||
110 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
111 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
112 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
113 | } | - | ||||||||||||
114 | } | - | ||||||||||||
115 | - | |||||||||||||
116 | char * | - | ||||||||||||
117 | get_peer_ipaddr(int sock) | - | ||||||||||||
118 | { | - | ||||||||||||
119 | char *p; | - | ||||||||||||
120 | - | |||||||||||||
121 | if ((
| 0 | ||||||||||||
122 | 1
| 0 | ||||||||||||
123 | )) !=
| 0 | ||||||||||||
124 | ((void *)0)
| 0 | ||||||||||||
125 | ) | - | ||||||||||||
126 | return never executed: p;return p; never executed: return p; | 0 | ||||||||||||
127 | return never executed: xstrdup("UNKNOWN");return xstrdup("UNKNOWN"); never executed: return xstrdup("UNKNOWN"); | 0 | ||||||||||||
128 | } | - | ||||||||||||
129 | - | |||||||||||||
130 | char * | - | ||||||||||||
131 | get_local_ipaddr(int sock) | - | ||||||||||||
132 | { | - | ||||||||||||
133 | char *p; | - | ||||||||||||
134 | - | |||||||||||||
135 | if ((
| 0 | ||||||||||||
136 | 1
| 0 | ||||||||||||
137 | )) !=
| 0 | ||||||||||||
138 | ((void *)0)
| 0 | ||||||||||||
139 | ) | - | ||||||||||||
140 | return never executed: p;return p; never executed: return p; | 0 | ||||||||||||
141 | return never executed: xstrdup("UNKNOWN");return xstrdup("UNKNOWN"); never executed: return xstrdup("UNKNOWN"); | 0 | ||||||||||||
142 | } | - | ||||||||||||
143 | - | |||||||||||||
144 | char * | - | ||||||||||||
145 | get_local_name(int fd) | - | ||||||||||||
146 | { | - | ||||||||||||
147 | char *host, myname[ | - | ||||||||||||
148 | 1025 | - | ||||||||||||
149 | ]; | - | ||||||||||||
150 | - | |||||||||||||
151 | - | |||||||||||||
152 | if ((
| 0 | ||||||||||||
153 | 8
| 0 | ||||||||||||
154 | )) !=
| 0 | ||||||||||||
155 | ((void *)0)
| 0 | ||||||||||||
156 | ) | - | ||||||||||||
157 | return never executed: host;return host; never executed: return host; | 0 | ||||||||||||
158 | - | |||||||||||||
159 | - | |||||||||||||
160 | if (gethostname(myname, sizeof(myname)) == -1
| 0 | ||||||||||||
161 | verbose("%s: gethostname: %s", __func__, strerror( | - | ||||||||||||
162 | (*__errno_location ()) | - | ||||||||||||
163 | )); | - | ||||||||||||
164 | host = xstrdup("UNKNOWN"); | - | ||||||||||||
165 | } never executed: else {end of block | 0 | ||||||||||||
166 | host = xstrdup(myname); | - | ||||||||||||
167 | } never executed: end of block | 0 | ||||||||||||
168 | - | |||||||||||||
169 | return never executed: host;return host; never executed: return host; | 0 | ||||||||||||
170 | } | - | ||||||||||||
171 | - | |||||||||||||
172 | - | |||||||||||||
173 | - | |||||||||||||
174 | static int | - | ||||||||||||
175 | get_sock_port(int sock, int local) | - | ||||||||||||
176 | { | - | ||||||||||||
177 | struct sockaddr_storage from; | - | ||||||||||||
178 | socklen_t fromlen; | - | ||||||||||||
179 | char strport[ | - | ||||||||||||
180 | 32 | - | ||||||||||||
181 | ]; | - | ||||||||||||
182 | int r; | - | ||||||||||||
183 | - | |||||||||||||
184 | - | |||||||||||||
185 | fromlen = sizeof(from); | - | ||||||||||||
186 | memset(&from, 0, sizeof(from)); | - | ||||||||||||
187 | if (local
| 0 | ||||||||||||
188 | if (getsockname(sock, (struct sockaddr *)&from, &fromlen) < 0
| 0 | ||||||||||||
189 | error("getsockname failed: %.100s", strerror( | - | ||||||||||||
190 | (*__errno_location ()) | - | ||||||||||||
191 | )); | - | ||||||||||||
192 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
193 | } | - | ||||||||||||
194 | } never executed: else {end of block | 0 | ||||||||||||
195 | if (getpeername(sock, (struct sockaddr *)&from, &fromlen) < 0
| 0 | ||||||||||||
196 | debug("getpeername failed: %.100s", strerror( | - | ||||||||||||
197 | (*__errno_location ()) | - | ||||||||||||
198 | )); | - | ||||||||||||
199 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||
200 | } | - | ||||||||||||
201 | } never executed: end of block | 0 | ||||||||||||
202 | - | |||||||||||||
203 | - | |||||||||||||
204 | if (from.ss_family ==
| 0 | ||||||||||||
205 | 10
| 0 | ||||||||||||
206 | ) | - | ||||||||||||
207 | fromlen = sizeof(struct sockaddr_in6); never executed: fromlen = sizeof(struct sockaddr_in6); | 0 | ||||||||||||
208 | - | |||||||||||||
209 | - | |||||||||||||
210 | if (from.ss_family !=
| 0 | ||||||||||||
211 | 2
| 0 | ||||||||||||
212 | && from.ss_family !=
| 0 | ||||||||||||
213 | 10
| 0 | ||||||||||||
214 | ) | - | ||||||||||||
215 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
216 | - | |||||||||||||
217 | - | |||||||||||||
218 | if ((
| 0 | ||||||||||||
219 | ((void *)0)
| 0 | ||||||||||||
220 | , 0,
| 0 | ||||||||||||
221 | strport, sizeof(strport),
| 0 | ||||||||||||
222 | 2
| 0 | ||||||||||||
223 | )) != 0
| 0 | ||||||||||||
224 | fatal("%s: getnameinfo NI_NUMERICSERV failed: %s", __func__, never executed: fatal("%s: getnameinfo NI_NUMERICSERV failed: %s", __func__, ssh_gai_strerror(r)); | 0 | ||||||||||||
225 | ssh_gai_strerror(r)); never executed: fatal("%s: getnameinfo NI_NUMERICSERV failed: %s", __func__, ssh_gai_strerror(r)); | 0 | ||||||||||||
226 | return never executed: atoi(strport);return atoi(strport); never executed: return atoi(strport); | 0 | ||||||||||||
227 | } | - | ||||||||||||
228 | - | |||||||||||||
229 | int | - | ||||||||||||
230 | get_peer_port(int sock) | - | ||||||||||||
231 | { | - | ||||||||||||
232 | return never executed: get_sock_port(sock, 0);return get_sock_port(sock, 0); never executed: return get_sock_port(sock, 0); | 0 | ||||||||||||
233 | } | - | ||||||||||||
234 | - | |||||||||||||
235 | int | - | ||||||||||||
236 | get_local_port(int sock) | - | ||||||||||||
237 | { | - | ||||||||||||
238 | return never executed: get_sock_port(sock, 1);return get_sock_port(sock, 1); never executed: return get_sock_port(sock, 1); | 0 | ||||||||||||
239 | } | - | ||||||||||||
Switch to Source code | Preprocessed file |