From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS17314 8.43.84.0/22 X-Spam-Status: No, score=-4.2 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,NICE_REPLY_A, RCVD_IN_DNSWL_HI,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 7551C1F8C6 for ; Thu, 15 Jul 2021 05:16:51 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A5D9D39DC4F4 for ; Thu, 15 Jul 2021 05:16:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A5D9D39DC4F4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1626326210; bh=s/n23B3YFJ74Aj42nCT2kEXyNswZgCzUPrKSogIQV38=; h=Subject:To:References:Date:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=fU3P11XsuTzdLksOwLYKB0N1/TNeA5Ld62g9+B+RdWBCTkwT9Qdqh/dnr+29hGSxT CFzVQfNAXrBhqlvn+wXHrozpwxqtEnOgriEyDGAmKvYdtsdOH0pGTkzrDmiEz6flxO L5YviridFYUT0UafCikfzApoXtUPpiQSy1DGM2b0= Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id E092A399C035 for ; Thu, 15 Jul 2021 05:01:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E092A399C035 Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-380-qeqd-e_wMce13tSKw11Eww-1; Thu, 15 Jul 2021 01:01:53 -0400 X-MC-Unique: qeqd-e_wMce13tSKw11Eww-1 Received: by mail-qk1-f198.google.com with SMTP id 81-20020a370b540000b02903b854c43335so2853384qkl.21 for ; Wed, 14 Jul 2021 22:01:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=s/n23B3YFJ74Aj42nCT2kEXyNswZgCzUPrKSogIQV38=; b=reK3cls0TMwGA/GSEOUVH10KiQWEjeFF+M70SwI6ci1I5BCYVDjvf14w7lavUa1A9N LymlSY57OQyboPFUYLzA3Xa8q4NGXxeQwpwmCA6k2oYSyg24I2CWC+K64psd+c+8EKU/ D/uN6RPPmokhSiZCXj2tgEvWGRcjNPY3MThTCf2i3crBSa3CkKkcxQ42mzhvYB4kQ0Ni 6+qtBUQic69+pKWCry0xwG4ky+m+WTcLj10z9x9flHm5GE+T/ss/LPREzw+JzP7flFJN 30oYCPV9mH8zOOPf4g2YEQstTj12y3SLt2AHmAPUMk6O/uXwOgmulq+ju9Cofh0hIFrB t7ig== X-Gm-Message-State: AOAM531k9+uHZ5+OgTU2IOrU9+0Mwpgpe1KcabVbRzcMDf/SPDy6t649 3K41renyMTuyogP2GlKt45Y19W6RspQiHtBw6SwsmUe4zCX5O+k2IAVHYRK3+2Xfc0MENCIQIRP qN7e54PwNILS5WiGWp1rSuRIdf/8Bm9J9niiFGZFuUemvh5VQogrKPih/cehC3eW6/bsBnw== X-Received: by 2002:ae9:eb54:: with SMTP id b81mr1639953qkg.192.1626325313318; Wed, 14 Jul 2021 22:01:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx94EY1qujQ99xHaTpHKZwiqI2X3CgNkLuiCswtr/tTteLGydWys08/aCtV4dGqNaIBFQ8Khw== X-Received: by 2002:ae9:eb54:: with SMTP id b81mr1639935qkg.192.1626325313096; Wed, 14 Jul 2021 22:01:53 -0700 (PDT) Received: from [192.168.1.16] (198-84-214-74.cpe.teksavvy.com. [198.84.214.74]) by smtp.gmail.com with ESMTPSA id p64sm2008765qka.114.2021.07.14.22.01.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 14 Jul 2021 22:01:52 -0700 (PDT) Subject: Re: [PATCH 21/30] resolv: Move ns_samename into its own file, and into libc To: Florian Weimer , libc-alpha@sourceware.org References: <5d3f0ea1306e8740a78f0f123eb3807027a8b1f2.1625755446.git.fweimer@redhat.com> Organization: Red Hat Message-ID: <49540a94-9d7d-97d3-00e3-1e4b690e3a3e@redhat.com> Date: Thu, 15 Jul 2021 01:01:51 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <5d3f0ea1306e8740a78f0f123eb3807027a8b1f2.1625755446.git.fweimer@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Carlos O'Donell via Libc-alpha Reply-To: Carlos O'Donell Errors-To: libc-alpha-bounces+e=80x24.org@sourceware.org Sender: "Libc-alpha" On 7/8/21 11:05 AM, Florian Weimer via Libc-alpha wrote: > But only as an internal symbol, __libc_ns_samename. The libresolv > ABI is preserved. This is because the function is deprecated, and > it does not make sense to add new symbol versions for deprecated > functions. OK for glibc 2.34. Tested without regression on x86_64 and i686. Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell > Also reformat the implementation to GNU style. > --- > include/arpa/nameser.h | 3 ++- > resolv/Makefile | 1 + > resolv/Versions | 1 + > resolv/ns_print.c | 6 +++--- > resolv/ns_samedomain.c | 28 +++------------------------- > resolv/ns_samename.c | 38 ++++++++++++++++++++++++++++++++++++++ > resolv/res_query.c | 2 +- > resolv/res_send.c | 4 ++-- > resolv/resolv-deprecated.c | 6 ++++++ > 9 files changed, 57 insertions(+), 32 deletions(-) > create mode 100644 resolv/ns_samename.c > > diff --git a/include/arpa/nameser.h b/include/arpa/nameser.h > index a529cc86d3..53f1dbc7c3 100644 > --- a/include/arpa/nameser.h > +++ b/include/arpa/nameser.h > @@ -68,7 +68,6 @@ libresolv_hidden_proto (ns_parserr) > libresolv_hidden_proto (ns_sprintrr) > libresolv_hidden_proto (ns_sprintrrf) > libresolv_hidden_proto (ns_samedomain) > -libresolv_hidden_proto (ns_samename) OK. > libresolv_hidden_proto (ns_format_ttl) > > extern __typeof (ns_makecanon) __libc_ns_makecanon; > @@ -87,6 +86,8 @@ extern __typeof (ns_name_uncompress) __ns_name_uncompress; > libc_hidden_proto (__ns_name_uncompress) > extern __typeof (ns_name_unpack) __ns_name_unpack; > libc_hidden_proto (__ns_name_unpack) > +extern __typeof (ns_samename) __libc_ns_samename; > +libc_hidden_proto (__libc_ns_samename) OK. > > # endif /* !_ISOMAC */ > #endif > diff --git a/resolv/Makefile b/resolv/Makefile > index d1ad5e4cba..744da951ae 100644 > --- a/resolv/Makefile > +++ b/resolv/Makefile > @@ -43,6 +43,7 @@ routines := \ > ns_name_skip \ > ns_name_uncompress \ > ns_name_unpack \ > + ns_samename \ OK. > nsap_addr \ > res-close \ > res-name-checking \ > diff --git a/resolv/Versions b/resolv/Versions > index 93078de25c..2201d4224c 100644 > --- a/resolv/Versions > +++ b/resolv/Versions > @@ -73,6 +73,7 @@ libc { > __libc_dn_expand; > __libc_dn_skipname; > __libc_ns_makecanon; > + __libc_ns_samename; OK. > __libc_res_dnok; > __libc_res_hnok; > __ns_name_compress; > diff --git a/resolv/ns_print.c b/resolv/ns_print.c > index 9a9602d74c..43f39edf61 100644 > --- a/resolv/ns_print.c > +++ b/resolv/ns_print.c > @@ -103,9 +103,9 @@ ns_sprintrrf(const u_char *msg, size_t msglen, > /* > * Owner. > */ > - if (name_ctx != NULL && ns_samename(name_ctx, name) == 1) { > + if (name_ctx != NULL && __libc_ns_samename (name_ctx, name) == 1) OK. > T(addstr("\t\t\t", 3, &buf, &buflen)); > - } else { > + else { > len = prune_origin(name, origin); > if (*name == '\0') { > goto root; > @@ -621,7 +621,7 @@ prune_origin(const char *name, const char *origin) { > const char *oname = name; > > while (*name != '\0') { > - if (origin != NULL && ns_samename(name, origin) == 1) > + if (origin != NULL && __libc_ns_samename (name, origin) == 1) OK. > return (name - oname - (name > oname)); > while (*name != '\0') { > if (*name == '\\') { > diff --git a/resolv/ns_samedomain.c b/resolv/ns_samedomain.c > index cfff2516b0..46cb8f5fb2 100644 > --- a/resolv/ns_samedomain.c > +++ b/resolv/ns_samedomain.c > @@ -139,31 +139,9 @@ libresolv_hidden_def (ns_samedomain) > * is "a" a subdomain of "b"? > */ > int > -ns_subdomain(const char *a, const char *b) { > - return (ns_samename(a, b) != 1 && ns_samedomain(a, b)); > +ns_subdomain (const char *a, const char *b) > +{ > + return __libc_ns_samename (a, b) != 1 && ns_samedomain (a, b); OK. > } > > -/*% > - * determine whether domain name "a" is the same as domain name "b" > - * > - * return: > - *\li -1 on error > - *\li 0 if names differ > - *\li 1 if names are the same > - */ > - > -int > -ns_samename(const char *a, const char *b) { > - char ta[NS_MAXDNAME], tb[NS_MAXDNAME]; > - > - if (__libc_ns_makecanon(a, ta, sizeof ta) < 0 || > - __libc_ns_makecanon(b, tb, sizeof tb) < 0) > - return (-1); > - if (strcasecmp(ta, tb) == 0) > - return (1); > - else > - return (0); > -} > -libresolv_hidden_def (ns_samename) OK. Remove ns_samename. > - > /*! \file */ > diff --git a/resolv/ns_samename.c b/resolv/ns_samename.c > new file mode 100644 > index 0000000000..61fe3cab43 > --- /dev/null > +++ b/resolv/ns_samename.c > @@ -0,0 +1,38 @@ > +/* Check if two domain names are equal after trailing dot normalization. OK. > + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") > + * Copyright (c) 1995,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 > +#include > + > +/* Determines whether domain name A is the same as domain name B. > + Returns -1 on error, 0 if names differ, 1 if names are the > + same. */ > +int > +__libc_ns_samename (const char *a, const char *b) > +{ > + char ta[NS_MAXDNAME], tb[NS_MAXDNAME]; OK. > + > + if (__libc_ns_makecanon (a, ta, sizeof ta) < 0 || > + __libc_ns_makecanon (b, tb, sizeof tb) < 0) > + return -1; > + if (__strcasecmp (ta, tb) == 0) > + return 1; > + else > + return 0; OK. Match. > +} > +libc_hidden_def (__libc_ns_samename) > diff --git a/resolv/res_query.c b/resolv/res_query.c > index ebbe5a6a4e..5b51af8451 100644 > --- a/resolv/res_query.c > +++ b/resolv/res_query.c > @@ -656,7 +656,7 @@ __res_context_hostalias (struct resolv_context *ctx, > if (!*cp1) > break; > *cp1 = '\0'; > - if (ns_samename(buf, name) == 1) { > + if (__libc_ns_samename(buf, name) == 1) { OK. > while (isspace(*++cp1)) > ; > if (!*cp1) > diff --git a/resolv/res_send.c b/resolv/res_send.c > index 915fc6d2c6..dfea9fc7fa 100644 > --- a/resolv/res_send.c > +++ b/resolv/res_send.c > @@ -224,8 +224,8 @@ res_nameinquery(const char *name, int type, int class, > return (-1); > NS_GET16(ttype, cp); > NS_GET16(tclass, cp); > - if (ttype == type && tclass == class && > - ns_samename(tname, name) == 1) > + if (ttype == type && tclass == class > + && __libc_ns_samename (tname, name) == 1) OK. > return (1); > } > return (0); > diff --git a/resolv/resolv-deprecated.c b/resolv/resolv-deprecated.c > index cbd1078dc2..d8344f8f39 100644 > --- a/resolv/resolv-deprecated.c > +++ b/resolv/resolv-deprecated.c > @@ -33,3 +33,9 @@ ns_makecanon (const char *src, char *dst, size_t dstsize) > { > return __libc_ns_makecanon (src, dst, dstsize); > } > + > +int > +ns_samename (const char *a, const char *b) > +{ > + return __libc_ns_samename (a, b); OK. Forwarder. > +} > -- Cheers, Carlos.