Martin Stransky 423ffa
--- authd-1.4.3/authd.c.old	2005-06-24 16:08:04.000000000 +0200
Martin Stransky 423ffa
+++ authd-1.4.3/authd.c	2005-06-24 16:12:06.000000000 +0200
Martin Stransky 423ffa
@@ -485,8 +485,19 @@
Martin Stransky 423ffa
 
Martin Stransky 423ffa
                 assert(opt.mapped != NULL);
Martin Stransky 423ffa
                 strcpy(peer_128, opt.mapped); strcpy(host_128, opt.mapped);
Martin Stransky 423ffa
-                strncpy(host_128, addr_hex, z);
Martin Stransky 423ffa
-                strncpy(peer_128, peer_addr_hex, strlen(peer_addr_hex));
Martin Stransky 423ffa
+
Martin Stransky 423ffa
+                /*
Martin Stransky 423ffa
+                   If mapping IPV4 to IPV6 space is enabled,
Martin Stransky 423ffa
+                   take only last 4 numbers of IPV6
Martin Stransky 423ffa
+                */
Martin Stransky 423ffa
+                if(opt.mapped[0]) {
Martin Stransky 423ffa
+                  strncpy(host_128, addr_hex+z-8, 8);
Martin Stransky 423ffa
+                  strncpy(peer_128, peer_addr_hex, 8);
Martin Stransky 423ffa
+                } else {
Martin Stransky 423ffa
+                  strncpy(host_128, addr_hex, z);
Martin Stransky 423ffa
+                  strncpy(peer_128, peer_addr_hex, strlen(peer_addr_hex));
Martin Stransky 423ffa
+                }
Martin Stransky 423ffa
+
Martin Stransky 423ffa
                 if (strcmp(peer_128, host_128) != 0) return addr;
Martin Stransky 423ffa
             }
Martin Stransky 423ffa
             // hex addr must have even number of digits