about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-01-14 01:39:38 +0000
committerEric Wong <e@80x24.org>2015-01-14 02:57:24 +0000
commit3bd881bfcda950e8d5a06cfef0847e6f46327182 (patch)
treeb9fd9515559053f5b228dfc80d5fa6263ac6b3b5
parentc388c34a38f819969511a598cc0cd1014de3e18c (diff)
downloadraindrops-3bd881bfcda950e8d5a06cfef0847e6f46327182.tar.gz
POSIX and glibc 2.2+ declare the hostlen and servlen
args of getnameinfo(3) to be socklen_t, not size_t,
so favor socklen_t for those calculations.

While we're at it, nlmsg_len is u32, too, so cast it
as such to avoid the warning.

Tested on clang version 3.5-1ubuntu1 on x86-64
-rw-r--r--ext/raindrops/linux_inet_diag.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/ext/raindrops/linux_inet_diag.c b/ext/raindrops/linux_inet_diag.c
index 5f21295..35bb127 100644
--- a/ext/raindrops/linux_inet_diag.c
+++ b/ext/raindrops/linux_inet_diag.c
@@ -232,8 +232,8 @@ static struct listen_stats *stats_for(st_table *table, struct inet_diag_msg *r)
         char *key, *port, *old_key;
         size_t alloca_len;
         struct listen_stats *stats;
-        size_t keylen;
-        size_t portlen = sizeof("65535");
+        socklen_t keylen;
+        socklen_t portlen = (socklen_t)sizeof("65535");
         union any_addr sa;
         socklen_t len = sizeof(struct sockaddr_storage);
         int rc;
@@ -274,8 +274,8 @@ static struct listen_stats *stats_for(st_table *table, struct inet_diag_msg *r)
                 *key = 0;
         }
 
-        keylen = strlen(key);
-        portlen = strlen(port);
+        keylen = (socklen_t)strlen(key);
+        portlen = (socklen_t)strlen(port);
 
         switch (sa.ss.ss_family) {
         case AF_INET:
@@ -396,8 +396,8 @@ static void prep_diag_args(
 
         nladdr->nl_family = AF_NETLINK;
 
-        req->nlh.nlmsg_len = sizeof(struct diag_req) +
-                            RTA_LENGTH(args->iov[2].iov_len);
+        req->nlh.nlmsg_len = (unsigned int)(sizeof(struct diag_req) +
+                            RTA_LENGTH(args->iov[2].iov_len));
         req->nlh.nlmsg_type = TCPDIAG_GETSOCK;
         req->nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
         req->nlh.nlmsg_pid = getpid();