| 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 |