Can you try this diff instead?

Eric.

Index: sockaddr.c
===================================================================
RCS file: /cvs/src/usr.sbin/smtpd/sockaddr.c,v
retrieving revision 1.4
diff -u -p -u -r1.4 sockaddr.c
--- sockaddr.c  16 May 2011 10:57:41 -0000      1.4
+++ sockaddr.c  14 Jun 2012 11:16:18 -0000
@@ -114,13 +114,13 @@ sockaddr_as_fqdn(const struct sockaddr *
 
        switch (sa->sa_family) {
        case AF_INET:
-               addr = ((const struct sockaddr_in *)sa)->sin_addr.s_addr;
+               addr = ntohl(((const struct sockaddr_in *)sa)->sin_addr.s_addr);
                snprintf(dst, max,
                    "%d.%d.%d.%d.in-addr.arpa.",
-                   (addr >> 24) & 0xff,
-                   (addr >> 16) & 0xff,
+                   addr & 0xff,
                    (addr >> 8) & 0xff,
-                   addr & 0xff);
+                   (addr >> 16) & 0xff,
+                   (addr >> 24) & 0xff);
                break;
        case AF_INET6:
                in6_addr = &((const struct sockaddr_in6 *)sa)->sin6_addr;

Reply via email to