We don't and won't support this, so let's not even try.

ok?


Index: inetd.c
===================================================================
RCS file: /cvs/src/usr.sbin/inetd/inetd.c,v
retrieving revision 1.156
diff -u -p -r1.156 inetd.c
--- inetd.c     4 Oct 2017 19:52:26 -0000       1.156
+++ inetd.c     4 Oct 2017 19:58:48 -0000
@@ -444,7 +444,6 @@ dg_badinput(struct sockaddr *sa)
        case AF_INET:
                in.s_addr = ntohl(((struct sockaddr_in *)sa)->sin_addr.s_addr);
                port = ntohs(((struct sockaddr_in *)sa)->sin_port);
-       v4chk:
                if (IN_MULTICAST(in.s_addr))
                        goto bad;
                switch ((in.s_addr & 0xff000000) >> 24) {
@@ -460,16 +459,12 @@ dg_badinput(struct sockaddr *sa)
                if (IN6_IS_ADDR_MULTICAST(in6) || IN6_IS_ADDR_UNSPECIFIED(in6))
                        goto bad;
                /*
-                * OpenBSD does not support IPv4 mapped address (RFC2553
-                * inbound behavior) at all.  We should drop it.
+                * OpenBSD does not support IPv4-mapped and
+                * IPv4-compatible IPv6 addresses (RFC2553). We should
+                * drop the packet.
                 */
-               if (IN6_IS_ADDR_V4MAPPED(in6))
+               if (IN6_IS_ADDR_V4MAPPED(in6) || IN6_IS_ADDR_V4COMPAT(in6))
                        goto bad;
-               if (IN6_IS_ADDR_V4COMPAT(in6)) {
-                       memcpy(&in, &in6->s6_addr[12], sizeof(in));
-                       in.s_addr = ntohl(in.s_addr);
-                       goto v4chk;
-               }
                break;
        default:
                /* Unsupported AF */


-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to