about summary refs log tree commit diff
path: root/resolv/res_comp.c
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2021-07-19 07:55:27 +0200
committerFlorian Weimer <fweimer@redhat.com>2021-07-19 07:56:21 +0200
commit2fbe5860d33ca2318b35ea6d31beefa381b4ac8a (patch)
treebf8baa77f1b3565eaf5a872331d8bd2a01943221 /resolv/res_comp.c
parent391e02236b931132c0e8b5ba4c3b087c2aaa1044 (diff)
downloadglibc-2fbe5860d33ca2318b35ea6d31beefa381b4ac8a.tar.gz
glibc-2fbe5860d33ca2318b35ea6d31beefa381b4ac8a.tar.xz
glibc-2fbe5860d33ca2318b35ea6d31beefa381b4ac8a.zip
resolv: Rename res_comp.c to res-name-checking.c and move into libc
This reflects what the remaining functions in the file do.

The __res_dnok, __res_hnok, __res_mailok, __res_ownok were moved
with the script, using --no-new-version, and turned into compat
symbols.  __libc_res_dnok@@GLIBC_PRIVATE and
__libc_res_hnok@@GLIBC_PRIVATE are added for internal use, to avoid
accidentally binding to compatibility symbols.  The new public
symbols res_dnok, res_hnok, res_mailok, res_ownok were added using
make update-all-abi.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'resolv/res_comp.c')
-rw-r--r--resolv/res_comp.c208
1 files changed, 0 insertions, 208 deletions
diff --git a/resolv/res_comp.c b/resolv/res_comp.c
deleted file mode 100644
index 16f7e02111..0000000000
--- a/resolv/res_comp.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/* Domain name processing functions.
-   Copyright (C) 1995-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <https://www.gnu.org/licenses/>.  */
-
-/*
- * 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:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 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
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * 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.
- *
- * 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
- * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/*
- * Portions Copyright (c) 1996-1999 by Internet Software Consortium.
- *
- * 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.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <netinet/in.h>
-#include <arpa/nameser.h>
-#include <ctype.h>
-#include <resolv.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-/* Return true if the string consists of printable ASCII characters
-   only.  */
-static bool
-printable_string (const char *dn)
-{
-  while (true)
-    {
-      char ch = *dn;
-      if (ch == '\0')
-	return true;
-      if (ch <= ' ' || ch > '~')
-	return false;
-      ++dn;
-    }
-}
-
-/* Return true if DN points to a name consisting only of [0-9a-zA-Z_-]
-   characters.  DN must be in DNS wire format, without
-   compression.  */
-static bool
-binary_hnok (const unsigned char *dn)
-{
-  while (true)
-    {
-      size_t label_length = *dn;
-      if (label_length == 0)
-	break;
-      ++dn;
-      const unsigned char *label_end = dn + label_length;
-      do
-	{
-	  unsigned char ch = *dn;
-	  if (!(('0' <= ch && ch <= '9')
-		|| ('A' <= ch && ch <= 'Z')
-		|| ('a' <= ch && ch <= 'z')
-		|| ch == '-' || ch == '_'))
-	    return false;
-	  ++dn;
-	}
-      while (dn < label_end);
-    }
-  return true;
-}
-
-/* Return true if the binary domain name has a first labels which
-   starts with '-'.  */
-static inline bool
-binary_leading_dash (const unsigned char *dn)
-{
-  return dn[0] > 0 && dn[1] == '-';
-}
-
-/* Return 1 if res_hnok is a valid host name.  Labels must only
-   contain [0-9a-zA-Z_-] characters, and the name must not start with
-   a '-'.  The latter is to avoid confusion with program options.  */
-int
-res_hnok (const char *dn)
-{
-  unsigned char buf[NS_MAXCDNAME];
-  if (!printable_string (dn)
-      || ns_name_pton (dn, buf, sizeof (buf)) < 0
-      || binary_leading_dash (buf))
-    return 0;
-  return binary_hnok (buf);
-}
-libresolv_hidden_def (res_hnok)
-
-/* Hostname-like (A, MX, WKS) owners can have "*" as their first label
-   but must otherwise be as a host name.  */
-int
-res_ownok (const char *dn)
-{
-  unsigned char buf[NS_MAXCDNAME];
-  if (!printable_string (dn)
-      || ns_name_pton (dn, buf, sizeof (buf)) < 0
-      || binary_leading_dash (buf))
-    return 0;
-  if (buf[0] == 1 && buf [1] == '*')
-    /* Skip over the leading "*." part.  */
-    return binary_hnok (buf + 2);
-  else
-    return binary_hnok (buf);
-}
-
-/* SOA RNAMEs and RP RNAMEs can have any byte in their first label,
-   but the rest of the name has to look like a host name.  */
-int
-res_mailok (const char *dn)
-{
-  unsigned char buf[NS_MAXCDNAME];
-  if (!printable_string (dn)
-      || ns_name_pton (dn, buf, sizeof (buf)) < 0)
-    return 0;
-  unsigned char label_length = buf[0];
-  /* "." is a valid missing representation */
-  if (label_length == 0)
-    return 1;
-  /* Skip over the first label.  */
-  unsigned char *tail = buf + 1 + label_length;
-  if (*tail == 0)
-    /* More than one label is required (except for ".").  */
-    return 0;
-  return binary_hnok (tail);
-}
-
-/* Return 1 if DN is a syntactically valid domain name.  Empty names
-   are accepted.  */
-int
-res_dnok (const char *dn)
-{
-  unsigned char buf[NS_MAXCDNAME];
-  return printable_string (dn) && ns_name_pton (dn, buf, sizeof (buf)) >= 0;
-}
-libresolv_hidden_def (res_dnok)