summaryrefslogtreecommitdiffstats
path: root/src/sh_ipvx.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sh_ipvx.c')
-rw-r--r--src/sh_ipvx.c50
1 files changed, 31 insertions, 19 deletions
diff --git a/src/sh_ipvx.c b/src/sh_ipvx.c
index 84ceec9..41f23ef 100644
--- a/src/sh_ipvx.c
+++ b/src/sh_ipvx.c
@@ -200,6 +200,7 @@ char * sh_ipvx_print_sockaddr (struct sockaddr * sa, int sa_family)
struct sh_sockaddr ss;
static char ipbuf[SH_IP_BUF];
+ memset(&ss, 0, sizeof(struct sh_sockaddr));
sh_ipvx_save(&ss, sa_family, sa);
sh_ipvx_ntoa (ipbuf, sizeof(ipbuf), &ss);
return ipbuf;
@@ -207,8 +208,6 @@ char * sh_ipvx_print_sockaddr (struct sockaddr * sa, int sa_family)
void sh_ipvx_save(struct sh_sockaddr * ss, int sa_family, struct sockaddr * sa)
{
- /* memset(ss, '\0', sizeof(struct sh_sockaddr)); */
-
switch (sa_family)
{
case AF_INET:
@@ -250,23 +249,22 @@ int sh_ipvx_set_port(struct sh_sockaddr * ss, int port)
#endif
}
-int sh_ipvx_get_port(struct sockaddr * sa, int sa_family)
+int sh_ipvx_get_port(struct sh_sockaddr * sa)
{
int port = 0;
#if defined(USE_IPVX)
- switch (sa_family)
+ switch (sa->ss_family)
{
case AF_INET:
- port = ntohs(((struct sockaddr_in *)sa)->sin_port);
+ port = ntohs((sa->sin).sin_port);
break;
case AF_INET6:
- port = ntohs(((struct sockaddr_in6 *)sa)->sin6_port);
+ port = ntohs((sa->sin6).sin6_port);
break;
}
#else
- (void) sa_family;
- port = ntohs(((struct sockaddr_in *)sa)->sin_port);
+ port = ntohs((sa->sin).sin_port);
#endif
return port;
}
@@ -278,7 +276,7 @@ int sh_ipvx_aton (const char * name, struct sh_sockaddr * ss)
struct addrinfo hints;
struct addrinfo *res;
- memset(&hints, '\0', sizeof(hints));
+ memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_UNSPEC;
hints.ai_flags = AI_NUMERICHOST;
ret = getaddrinfo(name, NULL, &hints, &res);
@@ -286,7 +284,7 @@ int sh_ipvx_aton (const char * name, struct sh_sockaddr * ss)
if (ret)
return 0;
- memset(ss, '\0', sizeof(struct sh_sockaddr));
+ memset(ss, 0, sizeof(struct sh_sockaddr));
switch(res->ai_family)
{
case AF_INET:
@@ -301,6 +299,7 @@ int sh_ipvx_aton (const char * name, struct sh_sockaddr * ss)
return 0;
break;
}
+ freeaddrinfo(res);
return 1;
#else
int ret = inet_aton(name, &((ss->sin).sin_addr));
@@ -354,6 +353,8 @@ char * sh_ipvx_canonical(const char * hostname, char * numeric, size_t nlen)
const char * host;
char hostbuf[SH_BUFSIZE];
+ SL_ENTER(_("sh_ipvx_canonical"));
+
numeric[0] = '\0';
sh_dummy_341_out = (void *) &out;
@@ -381,6 +382,8 @@ char * sh_ipvx_canonical(const char * hostname, char * numeric, size_t nlen)
err = getaddrinfo(host, NULL, &hints, &res);
if (err == 0)
{
+ struct addrinfo * res_orig = res;
+
#if defined(AI_CANONNAME)
if (res->ai_canonname && strlen(res->ai_canonname) > 0)
{
@@ -412,6 +415,8 @@ char * sh_ipvx_canonical(const char * hostname, char * numeric, size_t nlen)
res = res->ai_next;
}
+
+ freeaddrinfo(res_orig);
}
#else
struct hostent *he;
@@ -419,6 +424,8 @@ char * sh_ipvx_canonical(const char * hostname, char * numeric, size_t nlen)
volatile int isNum = 0;
struct sockaddr_in *sin;
+ SL_ENTER(_("sh_ipvx_canonical"));
+
numeric[0] = '\0';
sh_dummy_341_out = (void *) &out;
@@ -454,14 +461,15 @@ char * sh_ipvx_canonical(const char * hostname, char * numeric, size_t nlen)
SH_MUTEX_UNLOCK(mutex_resolv);
#endif
- if (flag)
- return out;
+ if (flag) {
+ SL_RETURN(out, _("sh_ipvx_canonical"));
+ }
if (out)
SH_FREE(out);
if (numeric[0] == '\0')
sl_strlcpy (numeric, _("0.0.0.0"), nlen);
- return NULL;
+ SL_RETURN(NULL, _("sh_ipvx_canonical"));
}
char * sh_ipvx_addrtoname(struct sh_sockaddr * ss)
@@ -500,15 +508,17 @@ int sh_ipvx_reverse_check_ok (char * peer, int port, struct sh_sockaddr * ss)
char sport[32];
struct addrinfo *p;
+ SL_ENTER(_("sh_ipvx_reverse_check_ok"));
+
sl_snprintf(sport, sizeof(sport), "%d", port);
- memset(&hints, '\0', sizeof(hints));
+ memset(&hints, 0, sizeof(hints));
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_ADDRCONFIG;
if (getaddrinfo(peer, sport, &hints, &res) != 0)
{
- return 0;
+ SL_RETURN((0), _("sh_ipvx_reverse_check_ok"));
}
p = res;
@@ -528,7 +538,7 @@ int sh_ipvx_reverse_check_ok (char * peer, int port, struct sh_sockaddr * ss)
if (0 == sl_strcmp(dst1, dst2))
{
- return 1;
+ SL_RETURN((1), _("sh_ipvx_reverse_check_ok"));
}
}
p = p->ai_next;
@@ -541,17 +551,19 @@ int sh_ipvx_reverse_check_ok (char * peer, int port, struct sh_sockaddr * ss)
(void) port;
+ SL_ENTER(_("sh_ipvx_reverse_check_ok"));
+
he = sh_gethostbyname(peer);
if (he != NULL)
{
for (p = he->h_addr_list; *p; ++p)
{
- if (0 == memcmp (*p, &(sin->sin_addr), sizeof(in_addr_t)) )
- return 1;
+ if (0 == memcmp (*p, &(sin->sin_addr), sizeof(in_addr_t)) ) {
+ SL_RETURN((1), _("sh_ipvx_reverse_check_ok")); }
}
}
#endif
- return 0;
+ SL_RETURN((0), _("sh_ipvx_reverse_check_ok"));
}
#ifdef SH_CUTEST