public inbox for libc-stable@sourceware.org
 help / color / mirror / Atom feed
From: Florian Weimer <fweimer@redhat.com>
To: Aurelien Jarno <aurelien@aurel32.net>
Cc: libc-stable@sourceware.org, carlos@redhat.com
Subject: Re: Backporting CVE-2016-10739
Date: Tue, 01 Jan 2019 00:00:00 -0000	[thread overview]
Message-ID: <871s4nppu4.fsf@oldenburg2.str.redhat.com> (raw)
In-Reply-To: <20190204134254.GA13816@aurel32.net> (Aurelien Jarno's message of	"Mon, 4 Feb 2019 14:42:54 +0100")

Here is the patch I'm testing to restore ABI after the regular
backports.  This looks fairly reasonable to me as far as such things
go.

I've put all patches on the fw/bug20018-backport branch on sourceware as
well.

Thanks,
Florian

Restore GLIBC_PRIVATE ABI after CVE-2016-10739 fix [BZ #20018]

This commit avoids adding the __inet_aton_exact@GLIBC_PRIVATE
symbol.  In master, the separately-compiled getaddrinfo
implementation in nscd needs it, however such an internal ABI change
is not desirable on a release branch if it can be avoided easily.

2019-02-04  Florian Weimer  <fweimer@redhat.com>

	[BZ #20018]
	Restore GLIBC_PRIVATE ABI after CVE-2016-10739 fix.
	* include/arpa/inet.h (__inet_aton_exact): Declare as hidden.
	* resolv/inet_addr.c (__inet_aton_exact): Remove libc_hidden_def.
	* resolv/Versions (GLIBC_PRIVATE): Do not export
	__inet_aton_exact.
	* nscd/nscd-inet_addr.c: New file.  Build resolv/inet_addr.c for
	nscd, without public symbols.
	* nscd/Makefile (nscd-modules): Add it.

diff --git a/include/arpa/inet.h b/include/arpa/inet.h
index 19aec74275..dce60b4909 100644
--- a/include/arpa/inet.h
+++ b/include/arpa/inet.h
@@ -2,8 +2,8 @@
 
 #ifndef _ISOMAC
 /* Variant of inet_aton which rejects trailing garbage.  */
-extern int __inet_aton_exact (const char *__cp, struct in_addr *__inp);
-libc_hidden_proto (__inet_aton_exact)
+extern int __inet_aton_exact (const char *__cp, struct in_addr *__inp)
+  attribute_hidden;
 
 libc_hidden_proto (inet_ntop)
 libc_hidden_proto (inet_pton)
diff --git a/nscd/Makefile b/nscd/Makefile
index b713a84c49..eb23c01a39 100644
--- a/nscd/Makefile
+++ b/nscd/Makefile
@@ -36,7 +36,7 @@ nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \
 		getsrvbynm_r getsrvbypt_r servicescache \
 		dbg_log nscd_conf nscd_stat cache mem nscd_setup_thread \
 		xmalloc xstrdup aicache initgrcache gai res_hconf \
-		netgroupcache
+		netgroupcache nscd-inet_addr
 
 ifeq ($(build-nscd)$(have-thread-library),yesyes)
 
diff --git a/nscd/nscd-inet_addr.c b/nscd/nscd-inet_addr.c
new file mode 100644
index 0000000000..cfa4ac7462
--- /dev/null
+++ b/nscd/nscd-inet_addr.c
@@ -0,0 +1,24 @@
+/* Legacy IPv4 text-to-address functions.  Version for nscd.
+   Copyright (C) 2019 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
+   <http://www.gnu.org/licenses/>.  */
+
+/* Do not provide definitions of the public symbols exported from
+   libc.  */
+#undef weak_alias
+#define weak_alias(from, to)
+
+#include <resolv/inet_addr.c>
diff --git a/resolv/Versions b/resolv/Versions
index 9a82704af7..b05778d965 100644
--- a/resolv/Versions
+++ b/resolv/Versions
@@ -27,7 +27,6 @@ libc {
     __h_errno; __resp;
 
     __res_iclose;
-    __inet_aton_exact;
     __inet_pton_length;
     __resolv_context_get;
     __resolv_context_get_preinit;
diff --git a/resolv/inet_addr.c b/resolv/inet_addr.c
index 41b6166a5b..1bc4a2c4d6 100644
--- a/resolv/inet_addr.c
+++ b/resolv/inet_addr.c
@@ -192,7 +192,6 @@ __inet_aton_exact (const char *cp, struct in_addr *addr)
   else
     return 0;
 }
-libc_hidden_def (__inet_aton_exact)
 
 /* inet_aton ignores trailing garbage.  */
 int

  parent reply	other threads:[~2019-02-04 14:53 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-01  0:00 Aurelien Jarno
2019-01-01  0:00 ` Florian Weimer
2019-01-01  0:00   ` Aurelien Jarno
2019-01-01  0:00     ` Florian Weimer
2019-01-01  0:00       ` Aurelien Jarno
2019-01-01  0:00 ` Florian Weimer [this message]
2019-01-01  0:00   ` Florian Weimer
2019-01-01  0:00     ` Carlos O'Donell
2019-01-01  0:00       ` Florian Weimer
2019-01-01  0:00         ` Carlos O'Donell
2019-01-01  0:00           ` Florian Weimer
2019-01-01  0:00             ` Carlos O'Donell
2019-01-01  0:00               ` Florian Weimer
2019-01-01  0:00                 ` Carlos O'Donell
2019-01-01  0:00                   ` Florian Weimer
2019-01-01  0:00                     ` Carlos O'Donell
2019-01-01  0:00                     ` Aurelien Jarno
2019-01-01  0:00   ` Carlos O'Donell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871s4nppu4.fsf@oldenburg2.str.redhat.com \
    --to=fweimer@redhat.com \
    --cc=aurelien@aurel32.net \
    --cc=carlos@redhat.com \
    --cc=libc-stable@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).