Fix endianness of IPv6 addresses in generate_hostmask().
authorMichael Poole <mdpoole@troilus.org>
Sun, 4 Jul 2010 21:58:35 +0000 (17:58 -0400)
committerMichael Poole <mdpoole@troilus.org>
Sun, 4 Jul 2010 21:58:35 +0000 (17:58 -0400)
src/proto-common.c (generate_hostmask): The IPv6 address parts are
    network-endian, so convert them before printing them.

src/proto-common.c

index c04fd712962e28e21faff9570f2e5418b51c4a44..4fa2d2b49f5758258911794d5815136703f0893a 100644 (file)
@@ -762,7 +762,7 @@ generate_hostmask(struct userNode *user, int options)
             sprintf(hostname, "%d.%d.*", user->ip.in6_8[12], user->ip.in6_8[13]);
         } else if (irc_in_addr_is_ipv6(user->ip)) {
             /* Who knows what the default mask should be?  Use a /48 to start with. */
-            sprintf(hostname, "%x:%x:%x:*", user->ip.in6[0], user->ip.in6[1], user->ip.in6[2]);
+            sprintf(hostname, "%x:%x:%x:*", ntohs(user->ip.in6[0]), ntohs(user->ip.in6[1]), ntohs(user->ip.in6[2]));
         } else {
             /* Unknown type; just copy IP directly. */
             irc_ntop(hostname, IRC_NTOP_MAX_SIZE, &user->ip);