diff --git a/lib/nvt_socket.c b/lib/nvt_socket.c index 08b1b44..8ea182a 100644 --- a/lib/nvt_socket.c +++ b/lib/nvt_socket.c @@ -25,52 +25,59 @@ typedef struct { } sa_t; -static int _sa_host_lookup(sa_t * sa, const char *host, const char *port) +static int _sa_host_lookup(sa_t *sa, const char *host, const char *port) { struct addrinfo hint, *adrinf = NULL, *p; - int ret = -1; + int ret = -1; memset(&hint, 0, sizeof(struct addrinfo)); - if(getaddrinfo(host, port, &hint, &adrinf) != 0) { + if (getaddrinfo(host, port, &hint, &adrinf) != 0) + { nvt_log(LOG_ERR, "Cannot resolve host name: %m\n"); return -1; } // Priority is given to the use of IPv4 // This code must be modified if the preffered protocol is changed or varied. - for(p = adrinf; p; p = p->ai_next) { - if(p->ai_family == AF_INET) { + for (p = adrinf; p; p = p->ai_next) + { + if (p->ai_family == AF_INET) + { sa->slen = sizeof(sa->ipv4); memcpy(&sa->ipv4, p->ai_addr, sizeof(struct sockaddr_in)); ret = 0; goto exit_host_lookup; } } - for(p = adrinf; p; p = p->ai_next) { - if(p->ai_family == AF_INET6) { + for (p = adrinf; p; p = p->ai_next) + { + if (p->ai_family == AF_INET6) + { sa->slen = sizeof(sa->ipv6); memcpy(&sa->ipv6, p->ai_addr, sizeof(struct sockaddr_in6)); ret = 0; goto exit_host_lookup; } } -exit_host_lookup: + exit_host_lookup: freeaddrinfo(adrinf); return ret; } -static int _sa_addr_parse(sa_t * sa, const char *addr) +static int _sa_addr_parse(sa_t *sa, const char *addr) { - ssize_t host_len; - char host[64]; - const char *port; + ssize_t host_len; + char host[64]; + const char *port; memset(sa, 0, sizeof(sa_t)); - if (strncmp(addr, "unix:", 5) == 0) { // case of unix domain sockets ... - addr += 5; // skip "unix:" prefix - if(strlen(addr) > sizeof(sa->un.sun_path) - 1) { + if (strncmp(addr, "unix:", 5) == 0) + { // case of unix domain sockets ... + addr += 5; // skip "unix:" prefix + if (strlen(addr) > sizeof(sa->un.sun_path) - 1) + { nvt_log(LOG_ERR, "UNIX domain socket path is too long.\n"); return -1; } @@ -81,28 +88,35 @@ static int _sa_addr_parse(sa_t * sa, const char *addr) return 0; } - if(!(port = strrchr(addr, ':'))) { + if (!(port = strrchr(addr, ':'))) + { nvt_log(LOG_ERR, "bad server address format.\n"); return -1; } host_len = (port++) - addr; // *port indicates the last ':', its next is 1st char of the port number - if(host_len >= 2 && addr[0] == '[' && addr[host_len-1] == ']') { + if (host_len >= 2 && addr[0] == '[' && addr[host_len - 1] == ']') + { // IPv6 addresses are enclosed in pair of square brackets. addr += 1; host_len -= 2; - } else { - if(strchr(addr, ':') != port-1) { - nvt_log(LOG_ERR, "addresses containing colons must be enclosed in square brackets.\n"); + } + else + { + if (strchr(addr, ':') != port - 1) + { + nvt_log(LOG_ERR, + "addresses containing colons must be enclosed in square brackets.\n"); return -1; } } - if((ssize_t)sizeof(host) <= host_len) { + if ((ssize_t) sizeof(host) <= host_len) + { nvt_log(LOG_ERR, "host name is too long.\n"); return -1; } strncpy(host, addr, host_len); - host[host_len] = '\0'; // strncpy doesn't add null char + host[host_len] = '\0'; // strncpy doesn't add null char if (_sa_host_lookup(sa, host, port) != 0) return -1;