Thu May 23 00:01:10 1996 Ulrich Drepper <drepper@cygnus.com>
authorroland <roland>
Thu, 23 May 1996 02:30:59 +0000 (02:30 +0000)
committerroland <roland>
Thu, 23 May 1996 02:30:59 +0000 (02:30 +0000)
Update from bind-4.9.4-T1A.
* resolv/Makefile (routines): Add inet_ntop and inet_pton.
* resolv/arpa/nameser.h: Add definition of IN6ADDRSZ.
* resolv/gethnamaddr.c, resolv/getnetnamadr.c, resolv/res_comp.c,
resolv/res_debug.c, resolv/res_init.c

resolv/arpa/nameser.h
resolv/getnetnamadr.c
resolv/res_comp.c
resolv/res_debug.c

index 3792b79..0fb04a1 100644 (file)
@@ -3,7 +3,7 @@
  * -
  * Copyright (c) 1983, 1989, 1993
  *    The Regents of the University of California.  All rights reserved.
  * -
  * Copyright (c) 1983, 1989, 1993
  *    The Regents of the University of California.  All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -19,7 +19,7 @@
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * SUCH DAMAGE.
  * -
  * Portions Copyright (c) 1993 by Digital Equipment Corporation.
  * SUCH DAMAGE.
  * -
  * Portions Copyright (c) 1993 by Digital Equipment Corporation.
- * 
+ *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies, and that
  * the name of Digital Equipment Corporation not be used in advertising or
  * publicity pertaining to distribution of the document or software without
  * specific, written prior permission.
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies, and that
  * the name of Digital Equipment Corporation not be used in advertising or
  * publicity pertaining to distribution of the document or software without
  * specific, written prior permission.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
  * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
  * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
@@ -97,7 +97,8 @@
 #define RRFIXEDSZ      10              /* #/bytes of fixed data in r record */
 #define        INT32SZ         4               /* for systems without 32-bit ints */
 #define        INT16SZ         2               /* for systems without 16-bit ints */
 #define RRFIXEDSZ      10              /* #/bytes of fixed data in r record */
 #define        INT32SZ         4               /* for systems without 32-bit ints */
 #define        INT16SZ         2               /* for systems without 16-bit ints */
-#define        INADDRSZ        4               /* for sizeof(struct inaddr) != 4 */
+#define        INADDRSZ        4               /* IPv4 T_A */
+#define IN6ADDRSZ      16              /* IPv6 T_AAAA */
 
 /*
  * Internet nameserver port number
 
 /*
  * Internet nameserver port number
 #define QUERY          0x0             /* standard query */
 #define IQUERY         0x1             /* inverse query */
 #define STATUS         0x2             /* nameserver status query */
 #define QUERY          0x0             /* standard query */
 #define IQUERY         0x1             /* inverse query */
 #define STATUS         0x2             /* nameserver status query */
-/*#define xxx          0x3             /* 0x3 reserved */
+/*#define xxx          0x3*/           /* 0x3 reserved */
 #define        NS_NOTIFY_OP    0x4             /* notify secondary of SOA change */
 #ifdef ALLOW_UPDATES
        /* non standard - supports ALLOW_UPDATES stuff from Mike Schwartz */
 #define        NS_NOTIFY_OP    0x4             /* notify secondary of SOA change */
 #ifdef ALLOW_UPDATES
        /* non standard - supports ALLOW_UPDATES stuff from Mike Schwartz */
index fad2b8c..9739995 100644 (file)
@@ -139,7 +139,7 @@ static      char *net_aliases[MAXALIASES], netbuf[BUFSIZ+1];
        haveanswer = 0;
        while (--ancount >= 0 && cp < eom) {
                n = dn_expand(answer->buf, eom, cp, bp, buflen);
        haveanswer = 0;
        while (--ancount >= 0 && cp < eom) {
                n = dn_expand(answer->buf, eom, cp, bp, buflen);
-               if ((n < 0) || !dn_isvalid(bp))
+               if ((n < 0) || !res_dnok(bp))
                        break;
                cp += n;
                ans[0] = '\0';
                        break;
                cp += n;
                ans[0] = '\0';
@@ -209,7 +209,7 @@ getnetbyaddr(net, net_type)
        int nn, anslen;
        querybuf buf;
        char qbuf[MAXDNAME];
        int nn, anslen;
        querybuf buf;
        char qbuf[MAXDNAME];
-       u_int32_t net2;
+       u_int32_t net2;         /* Changed from unsigned long --roland */
        struct netent *net_entry;
 
        if (net_type != AF_INET)
        struct netent *net_entry;
 
        if (net_type != AF_INET)
index f234772..e105dbb 100644 (file)
@@ -3,7 +3,7 @@
  * -
  * Copyright (c) 1985, 1993
  *    The Regents of the University of California.  All rights reserved.
  * -
  * Copyright (c) 1985, 1993
  *    The Regents of the University of California.  All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -19,7 +19,7 @@
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * SUCH DAMAGE.
  * -
  * Portions Copyright (c) 1993 by Digital Equipment Corporation.
  * SUCH DAMAGE.
  * -
  * Portions Copyright (c) 1993 by Digital Equipment Corporation.
- * 
+ *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies, and that
  * the name of Digital Equipment Corporation not be used in advertising or
  * publicity pertaining to distribution of the document or software without
  * specific, written prior permission.
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies, and that
  * the name of Digital Equipment Corporation not be used in advertising or
  * publicity pertaining to distribution of the document or software without
  * specific, written prior permission.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
  * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
  * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
@@ -343,7 +343,7 @@ dn_find(exp_dn, msg, dnptrs, lastdnptr)
 /****
 To: "Lawrence R. Rogers" <lrr@cert.org>
 cc: cert@cert.org, pvm@home.net
 /****
 To: "Lawrence R. Rogers" <lrr@cert.org>
 cc: cert@cert.org, pvm@home.net
-Subject: Re: VU#14542 
+Subject: Re: VU#14542
 In-reply-to: Your message of "Mon, 19 Feb 1996 17:16:27 PST."
 Date: Tue, 20 Feb 1996 22:37:21 -0800
 From: Paul A Vixie <vixie@wisdom.home.vix.com>
 In-reply-to: Your message of "Mon, 19 Feb 1996 17:16:27 PST."
 Date: Tue, 20 Feb 1996 22:37:21 -0800
 From: Paul A Vixie <vixie@wisdom.home.vix.com>
@@ -359,7 +359,7 @@ in retrospect,
 should have been
 
        hostname = label ( "." label )+
 should have been
 
        hostname = label ( "." label )+
-       firstchar = [a-zA-Z0-9_]
+       firstchar = [a-zA-Z0-9]
        otherchar = [a-zA-Z0-9_-]
        label = firstchar otherchar*
 
        otherchar = [a-zA-Z0-9_-]
        label = firstchar otherchar*
 
@@ -368,53 +368,98 @@ earlier.  since i'm only trying to bend the spec to fit actual known uses,
 i should not have widened the rules as far as i did earlier.
 ****/
 
 i should not have widened the rules as far as i did earlier.
 ****/
 
-#define firstchar(c) ((isascii(c) && isalnum(c)) || (c) == '_')
-#define otherchar(c) (firstchar(c) || (c) == '-')
-#define        wildlabel(firstlabel, ch, nch) \
-       ((firstlabel) && (ch) == '*' && ((nch) == '.' || (nch) == '\0'))
+/*
+ * Note the conspicuous absence of ctype macros in these definitions.  On
+ * non-ASCII hosts, we can't depend on string literals or ctype macros to
+ * tell us anything about network-format data.  The rest of the BIND system
+ * is not careful about this, but for some reason, we're doing it right here.
+ */
+#define PERIOD 0x2e
+#define        hyphenchar(c) ((c) == 0x2d)
+#define bslashchar(c) ((c) == 0x5c)
+#define periodchar(c) ((c) == PERIOD)
+#define asterchar(c) ((c) == 0x2a)
+#define alphachar(c) (((c) >= 0x41 && (c) <= 0x5a) \
+                  || ((c) >= 0x61 && (c) <= 0x7a))
+#define digitchar(c) ((c) >= 0x30 && (c) <= 0x39)
+
+#define borderchar(c) (alphachar(c) || digitchar(c))
+#define middlechar(c) (borderchar(c) || hyphenchar(c))
+#define        domainchar(c) ((c) > 0x20 && (c) < 0x7f)
 
 int
 res_hnok(dn)
        const char *dn;
 {
 
 int
 res_hnok(dn)
        const char *dn;
 {
-       int ppch = '\0', pch = '.', ch = *dn++, firstlabel = 1;
+       int ppch = '\0', pch = PERIOD, ch = *dn++;
 
        while (ch != '\0') {
                int nch = *dn++;
 
 
        while (ch != '\0') {
                int nch = *dn++;
 
-               if (ch == '.' || (ch == '\\' && nch == '.')) {
+               if (periodchar(ch)) {
                        NULL;
                        NULL;
-               } else if (pch == '.' && ppch != '\\') {
-                       if (!firstchar(ch) && !wildlabel(firstlabel, ch, nch))
+               } else if (periodchar(pch)) {
+                       if (!borderchar(ch))
+                               return (0);
+               } else if (periodchar(nch) || nch == '\0') {
+                       if (!borderchar(ch))
                                return (0);
                } else {
                                return (0);
                } else {
-                       if (!otherchar(ch))
+                       if (!middlechar(ch))
                                return (0);
                }
                ppch = pch, pch = ch, ch = nch;
                                return (0);
                }
                ppch = pch, pch = ch, ch = nch;
-               firstlabel = 0;
        }
        return (1);
 }
 
 /*
        }
        return (1);
 }
 
 /*
+ * hostname-like (A, MX, WKS) owners can have "*" as their first label
+ * but must otherwise be as a host name.
+ */
+int
+res_ownok(dn)
+       const char *dn;
+{
+       if (asterchar(dn[0]) && periodchar(dn[1]))
+               dn += 2;
+       return (res_hnok(dn));
+}
+
+/*
+ * SOA RNAMEs and RP RNAMEs can have any printable character in their first
+ * label, but the rest of the name has to look like a host name.
+ */
+int
+res_mailok(dn)
+       const char *dn;
+{
+       int ch, pch;
+
+       pch = '\0';
+       while ((ch = *dn++) != '\0') {
+               if (!domainchar(ch))
+                       return (0);
+               if (periodchar(ch) && !bslashchar(pch))
+                       break;
+               pch = ch;
+       }
+       return (res_hnok(dn));
+}
+
+/*
  * This function is quite liberal, since RFC 1034's character sets are only
  * recommendations.
  * This function is quite liberal, since RFC 1034's character sets are only
  * recommendations.
- *
- * Note that some char's are signed, so we have to cast to unsigned.
  */
 int
  */
 int
-dn_isvalid(dn)
+res_dnok(dn)
        const char *dn;
 {
        const char *dn;
 {
-       unsigned char *t = (unsigned char *)dn;
        int ch;
 
        int ch;
 
-       while ((ch = *t++) != '\0')
-               if (ch <= 0x1f || ch >= 0x7f) {
-                       /* Unprintable in ASCII. */
+       while ((ch = *dn++) != '\0')
+               if (!domainchar(ch))
                        return (0);
                        return (0);
-               }
        return (1);
 }
 
        return (1);
 }
 
@@ -498,7 +543,7 @@ putlong(l, msgp)
 {
        __putlong(l, msgp);
 }
 {
        __putlong(l, msgp);
 }
+
 #undef dn_skipname
 dn_skipname(comp_dn, eom)
        const u_char *comp_dn, *eom;
 #undef dn_skipname
 dn_skipname(comp_dn, eom)
        const u_char *comp_dn, *eom;
index 85ec628..4f55804 100644 (file)
@@ -3,7 +3,7 @@
  * -
  * Copyright (c) 1985, 1990, 1993
  *    The Regents of the University of California.  All rights reserved.
  * -
  * Copyright (c) 1985, 1990, 1993
  *    The Regents of the University of California.  All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -19,7 +19,7 @@
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * SUCH DAMAGE.
  * -
  * Portions Copyright (c) 1993 by Digital Equipment Corporation.
  * SUCH DAMAGE.
  * -
  * Portions Copyright (c) 1993 by Digital Equipment Corporation.
- * 
+ *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies, and that
  * the name of Digital Equipment Corporation not be used in advertising or
  * publicity pertaining to distribution of the document or software without
  * specific, written prior permission.
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies, and that
  * the name of Digital Equipment Corporation not be used in advertising or
  * publicity pertaining to distribution of the document or software without
  * specific, written prior permission.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
  * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
  * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
@@ -59,6 +59,8 @@ static char rcsid[] = "$Id$";
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/param.h>
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/param.h>
+#include <sys/types.h>
+#include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <arpa/nameser.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <arpa/nameser.h>
@@ -66,7 +68,7 @@ static char rcsid[] = "$Id$";
 #include <stdio.h>
 #include <netdb.h>
 #include <resolv.h>
 #include <stdio.h>
 #include <netdb.h>
 #include <resolv.h>
-#if defined(BSD) && (BSD >= 199103)
+#if defined(BSD) && (BSD >= 199103) && defined(AF_INET6)
 # include <string.h>
 #else
 # include "../conf/portability.h"
 # include <string.h>
 #else
 # include "../conf/portability.h"
@@ -295,7 +297,7 @@ __fp_nquery(msg, len, file)
                fprintf(file, ", Auth: %d", ntohs(hp->nscount));
                fprintf(file, ", Addit: %d", ntohs(hp->arcount));
        }
                fprintf(file, ", Auth: %d", ntohs(hp->nscount));
                fprintf(file, ", Addit: %d", ntohs(hp->arcount));
        }
-       if ((!_res.pfcode) || (_res.pfcode & 
+       if ((!_res.pfcode) || (_res.pfcode &
                (RES_PRF_HEADX | RES_PRF_HEAD2 | RES_PRF_HEAD1))) {
                putc('\n',file);
        }
                (RES_PRF_HEADX | RES_PRF_HEAD2 | RES_PRF_HEAD1))) {
                putc('\n',file);
        }
@@ -590,6 +592,13 @@ __p_rr(cp, msg, file)
                cp += dlen;
                break;
 
                cp += dlen;
                break;
 
+       case T_AAAA: {
+               char t[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"];
+
+               fprintf(file, "\t%s\n", inet_ntop(AF_INET6, cp, t, sizeof t));
+               break;
+       }
+
        case T_MINFO:
        case T_RP:
                putc('\t', file);
        case T_MINFO:
        case T_RP:
                putc('\t', file);