Remove deprecated libcrypt, gets replaced by libxcrypt
Add applicable Requires on libxcrypt Back in June, Björn Esser proposed to add OpenBSD-compatible bcrypt support to our implementation of crypt(3), and Zack Weinberg replied that it might actually make more sense to _remove_ libcrypt from glibc, freeing up libcrypt.so.1 and crypt.h to be provided by a separate project that could move faster. (For instance, libxcrypt: https://github.com/besser82/libxcrypt) This commit is the glibc part of: https://fedoraproject.org/wiki/Changes/Replace_glibc_libcrypt_with_libxcrypt
This commit is contained in:
parent
6a5972a529
commit
2687b3c78b
445
glibc-deprecate_libcrypt.patch
Normal file
445
glibc-deprecate_libcrypt.patch
Normal file
@ -0,0 +1,445 @@
|
|||||||
|
From 40c6efaefc54a6f2759224d9b07831301693b7e5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>
|
||||||
|
Date: Wed, 10 Jan 2018 13:30:04 +0100
|
||||||
|
Subject: [PATCH] Deprecate libcrypt and don't build it by default
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Back in June, Björn Esser proposed to add OpenBSD-compatible bcrypt
|
||||||
|
support to our implementation of crypt(3), and Zack Weinberg replied
|
||||||
|
that it might actually make more sense to _remove_ libcrypt from
|
||||||
|
glibc, freeing up libcrypt.so.1 and crypt.h to be provided by a
|
||||||
|
separate project that could move faster. (For instance, libxcrypt:
|
||||||
|
https://github.com/besser82/libxcrypt)
|
||||||
|
|
||||||
|
This patch disables build and installation of libcrypt by default. It
|
||||||
|
can be re-enabled with --enable-obsolete-crypt to configure. Unlike
|
||||||
|
libnsl, we do *not* install a runtime shared library; that's left to
|
||||||
|
the replacement. (Unlike the SunRPC situation, I think we can
|
||||||
|
probably drop this code altogether in a release or two.)
|
||||||
|
|
||||||
|
The function prototypes for crypt and encrypt are removed from
|
||||||
|
unistd.h, and the function prototype for setkey is removed from
|
||||||
|
stdlib.h; they do *not* come back with --enable-obsolete-crypt. This
|
||||||
|
means glibc no longer provides the POSIX CRYPT option, and the macro
|
||||||
|
_XOPEN_CRYPT is also removed from unistd.h to indicate that.
|
||||||
|
(_SC_XOPEN_CRYPT is still defined, but sysconf(_SC_XOPEN_CRYPT) will
|
||||||
|
return -1 at runtime.) These functions are also unconditionally
|
||||||
|
removed from conform/data/{stdlib,unistd}.h-data.
|
||||||
|
|
||||||
|
* posix/unistd.h (_XOPEN_CRYPT, crypt, encrypt): Don't declare.
|
||||||
|
* stdlib/stdlib.h (setkey): Don't declare.
|
||||||
|
|
||||||
|
* configure.ac (--enable-obsolete-crypt): New configure option.
|
||||||
|
* configure: Regenerate.
|
||||||
|
* config.make.in (build-obsolete-crypt): New makefile variable.
|
||||||
|
* crypt/Banner: Delete file.
|
||||||
|
* crypt/Makefile: Don't build anything unless
|
||||||
|
$(build-obsolete-crypt) is 'yes'.
|
||||||
|
* sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile: Only add things
|
||||||
|
to libcrypt-sysdep_routines when $(build-obsolete-crypt) is 'yes'.
|
||||||
|
* sysdeps/sparc/sparc64/multiarch/Makefile: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/arm/Makefile: Likewise.
|
||||||
|
|
||||||
|
* conform/Makefile: Only include libcrypt.a in linknamespace tests
|
||||||
|
when $(build-obsolete-crypt) is 'yes'.
|
||||||
|
* conform/data/stdlib.h-data (setkey): Don't expect.
|
||||||
|
* conform/data/unistd.h-data (crypt, encrypt): Don't expect.
|
||||||
|
* elf/Makefile: Only perform various tests of libcrypt.so/libcrypt.a
|
||||||
|
when $(build-obsolete-crypt) is 'yes'.
|
||||||
|
* elf/tst-linkall-static.c: Don't include crypt.h when USE_CRYPT
|
||||||
|
is false.
|
||||||
|
---
|
||||||
|
NEWS | 18 ++++++++++++++++++
|
||||||
|
config.make.in | 1 +
|
||||||
|
configure | 13 +++++++++++++
|
||||||
|
configure.ac | 8 ++++++++
|
||||||
|
conform/Makefile | 14 ++++++++++----
|
||||||
|
conform/data/stdlib.h-data | 3 ---
|
||||||
|
conform/data/unistd.h-data | 6 ------
|
||||||
|
crypt/Makefile | 5 +++++
|
||||||
|
elf/Makefile | 16 ++++++++++++----
|
||||||
|
elf/tst-linkall-static.c | 2 ++
|
||||||
|
posix/unistd.h | 16 ----------------
|
||||||
|
stdlib/stdlib.h | 6 ------
|
||||||
|
sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile | 2 ++
|
||||||
|
sysdeps/sparc/sparc64/multiarch/Makefile | 2 ++
|
||||||
|
sysdeps/unix/sysv/linux/arm/Makefile | 2 ++
|
||||||
|
15 files changed, 75 insertions(+), 39 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 79736dbee8..26d8288bc1 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -71,6 +71,24 @@ Major new features:
|
||||||
|
|
||||||
|
Deprecated and removed features, and other changes affecting compatibility:
|
||||||
|
|
||||||
|
+* The password-hashing library is deprecated, and will not be built or
|
||||||
|
+ installed by default. This only affects programs that link with -lcrypt,
|
||||||
|
+ include the header <crypt.h>, use the functions 'crypt', 'encrypt', or
|
||||||
|
+ 'setkey' (which were formerly declared in <unistd.h> and/or <stdlib.h>),
|
||||||
|
+ or inspect the feature-test macro _XOPEN_CRYPT.
|
||||||
|
+
|
||||||
|
+ A drop-in replacement for libcrypt and crypt.h is available from
|
||||||
|
+ https://github.com/besser82/libxcrypt. It also supports newer and more
|
||||||
|
+ secure password hashes.
|
||||||
|
+
|
||||||
|
+ The configure option --enable-obsolete-crypt will cause libcrypt and
|
||||||
|
+ crypt.h to be built and installed, but will not restore the declarations
|
||||||
|
+ of 'crypt', 'encrypt', and 'setkey' in other headers, nor will it cause
|
||||||
|
+ the feature-test macro _XOPEN_CRYPT to be defined.
|
||||||
|
+
|
||||||
|
+ Note that the configure option --enable-nss-crypt only affects libcrypt,
|
||||||
|
+ and therefore will only have an effect when --enable-obsolete-crypt is used.
|
||||||
|
+
|
||||||
|
* Support for statically linked applications which call dlopen is deprecated
|
||||||
|
and will be removed in a future version of glibc. Applications which call
|
||||||
|
dlopen need to be linked dynamically instead.
|
||||||
|
diff --git a/config.make.in b/config.make.in
|
||||||
|
index 9e5e24b2c6..8fe610d04d 100644
|
||||||
|
--- a/config.make.in
|
||||||
|
+++ b/config.make.in
|
||||||
|
@@ -82,6 +82,7 @@ mach-interface-list = @mach_interface_list@
|
||||||
|
|
||||||
|
experimental-malloc = @experimental_malloc@
|
||||||
|
|
||||||
|
+build-obsolete-crypt = @build_obsolete_crypt@
|
||||||
|
nss-crypt = @libc_cv_nss_crypt@
|
||||||
|
static-nss-crypt = @libc_cv_static_nss_crypt@
|
||||||
|
|
||||||
|
diff --git a/configure b/configure
|
||||||
|
index 7a8bd3f817..46f6bd7f86 100755
|
||||||
|
--- a/configure
|
||||||
|
+++ b/configure
|
||||||
|
@@ -672,6 +672,7 @@ base_machine
|
||||||
|
have_tunables
|
||||||
|
build_pt_chown
|
||||||
|
build_nscd
|
||||||
|
+build_obsolete_crypt
|
||||||
|
build_obsolete_nsl
|
||||||
|
link_obsolete_rpc
|
||||||
|
libc_cv_static_nss_crypt
|
||||||
|
@@ -782,6 +783,7 @@ enable_experimental_malloc
|
||||||
|
enable_nss_crypt
|
||||||
|
enable_obsolete_rpc
|
||||||
|
enable_obsolete_nsl
|
||||||
|
+enable_obsolete_crypt
|
||||||
|
enable_systemtap
|
||||||
|
enable_build_nscd
|
||||||
|
enable_nscd
|
||||||
|
@@ -1453,6 +1455,7 @@ Optional Features:
|
||||||
|
link-time usage
|
||||||
|
--enable-obsolete-nsl build and install the obsolete libnsl library and
|
||||||
|
depending NSS modules
|
||||||
|
+ --enable-obsolete-crypt build and install the obsolete libcrypt library
|
||||||
|
--enable-systemtap enable systemtap static probe points [default=no]
|
||||||
|
--disable-build-nscd disable building and installing the nscd daemon
|
||||||
|
--disable-nscd library functions will not contact the nscd daemon
|
||||||
|
@@ -3632,6 +3635,16 @@ if test "$build_obsolete_nsl" = yes; then
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
+# Check whether --enable-obsolete-crypt was given.
|
||||||
|
+if test "${enable_obsolete_crypt+set}" = set; then :
|
||||||
|
+ enableval=$enable_obsolete_crypt; build_obsolete_crypt=$enableval
|
||||||
|
+else
|
||||||
|
+ build_obsolete_crypt=no
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
# Check whether --enable-systemtap was given.
|
||||||
|
if test "${enable_systemtap+set}" = set; then :
|
||||||
|
enableval=$enable_systemtap; systemtap=$enableval
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index ca1282a6b3..0142353740 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -378,6 +378,14 @@ if test "$build_obsolete_nsl" = yes; then
|
||||||
|
AC_DEFINE(LINK_OBSOLETE_NSL)
|
||||||
|
fi
|
||||||
|
|
||||||
|
+AC_ARG_ENABLE([obsolete-crypt],
|
||||||
|
+ AC_HELP_STRING([--enable-obsolete-crypt],
|
||||||
|
+ [build and install the obsolete libcrypt library]),
|
||||||
|
+ [build_obsolete_crypt=$enableval],
|
||||||
|
+ [build_obsolete_crypt=no])
|
||||||
|
+AC_SUBST(build_obsolete_crypt)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
AC_ARG_ENABLE([systemtap],
|
||||||
|
[AS_HELP_STRING([--enable-systemtap],
|
||||||
|
[enable systemtap static probe points @<:@default=no@:>@])],
|
||||||
|
diff --git a/conform/Makefile b/conform/Makefile
|
||||||
|
index 864fdeca21..5ef474fb24 100644
|
||||||
|
--- a/conform/Makefile
|
||||||
|
+++ b/conform/Makefile
|
||||||
|
@@ -193,22 +193,28 @@ linknamespace-libs-thr = $(linknamespace-libs-isoc) \
|
||||||
|
$(common-objpfx)rt/librt.a $(static-thread-library)
|
||||||
|
linknamespace-libs-posix = $(linknamespace-libs-thr) \
|
||||||
|
$(common-objpfx)dlfcn/libdl.a
|
||||||
|
-linknamespace-libs-xsi = $(linknamespace-libs-posix) \
|
||||||
|
- $(common-objpfx)crypt/libcrypt.a
|
||||||
|
+linknamespace-libs-xsi = $(linknamespace-libs-posix)
|
||||||
|
linknamespace-libs-ISO = $(linknamespace-libs-isoc)
|
||||||
|
linknamespace-libs-ISO99 = $(linknamespace-libs-isoc)
|
||||||
|
linknamespace-libs-ISO11 = $(linknamespace-libs-isoc)
|
||||||
|
-linknamespace-libs-XPG4 = $(linknamespace-libs-isoc) \
|
||||||
|
- $(common-objpfx)crypt/libcrypt.a
|
||||||
|
+linknamespace-libs-XPG4 = $(linknamespace-libs-isoc)
|
||||||
|
linknamespace-libs-XPG42 = $(linknamespace-libs-XPG4)
|
||||||
|
linknamespace-libs-POSIX = $(linknamespace-libs-thr)
|
||||||
|
linknamespace-libs-UNIX98 = $(linknamespace-libs-xsi)
|
||||||
|
linknamespace-libs-XOPEN2K = $(linknamespace-libs-xsi)
|
||||||
|
linknamespace-libs-POSIX2008 = $(linknamespace-libs-posix)
|
||||||
|
linknamespace-libs-XOPEN2K8 = $(linknamespace-libs-xsi)
|
||||||
|
+
|
||||||
|
+ifeq ($(build-obsolete-crypt),yes)
|
||||||
|
+linknamespace-libs-xsi += $(common-objpfx)crypt/libcrypt.a
|
||||||
|
+linknamespace-libs-XPG4 += $(common-objpfx)crypt/libcrypt.a
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
linknamespace-libs = $(foreach std,$(conformtest-standards),\
|
||||||
|
$(linknamespace-libs-$(std)))
|
||||||
|
|
||||||
|
+
|
||||||
|
+
|
||||||
|
$(linknamespace-symlist-stdlibs-tests): $(objpfx)symlist-stdlibs-%: \
|
||||||
|
$(linknamespace-libs)
|
||||||
|
LC_ALL=C $(READELF) -W -s $(linknamespace-libs-$*) > $@; \
|
||||||
|
diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data
|
||||||
|
index d8fcccc2fb..6913828196 100644
|
||||||
|
--- a/conform/data/stdlib.h-data
|
||||||
|
+++ b/conform/data/stdlib.h-data
|
||||||
|
@@ -149,9 +149,6 @@ function {unsigned short int*} seed48 (unsigned short int[3])
|
||||||
|
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined XPG4 && !defined XPG42 && !defined UNIX98
|
||||||
|
function int setenv (const char*, const char*, int)
|
||||||
|
#endif
|
||||||
|
-#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
|
||||||
|
-function void setkey (const char*)
|
||||||
|
-#endif
|
||||||
|
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined XPG4 && !defined POSIX && !defined POSIX2008
|
||||||
|
function {char*} setstate (char*)
|
||||||
|
#endif
|
||||||
|
diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
|
||||||
|
index ddf4f25132..aa070528e8 100644
|
||||||
|
--- a/conform/data/unistd.h-data
|
||||||
|
+++ b/conform/data/unistd.h-data
|
||||||
|
@@ -437,9 +437,6 @@ function int chroot (const char*)
|
||||||
|
function int chown (const char*, uid_t, gid_t)
|
||||||
|
function int close (int)
|
||||||
|
function size_t confstr (int, char*, size_t)
|
||||||
|
-#if !defined POSIX && !defined POSIX2008
|
||||||
|
-function {char*} crypt (const char*, const char*)
|
||||||
|
-#endif
|
||||||
|
#if defined XPG4 || defined XPG42 || defined UNIX98
|
||||||
|
function {char*} ctermid (char*)
|
||||||
|
function {char*} cuserid (char*)
|
||||||
|
@@ -449,9 +446,6 @@ allow cuserid
|
||||||
|
#endif
|
||||||
|
function int dup (int)
|
||||||
|
function int dup2 (int, int)
|
||||||
|
-#if !defined POSIX && !defined POSIX2008
|
||||||
|
-function void encrypt (char[64], int)
|
||||||
|
-#endif
|
||||||
|
function int execl (const char*, const char*, ...)
|
||||||
|
function int execle (const char*, const char*, ...)
|
||||||
|
function int execlp (const char*, const char*, ...)
|
||||||
|
diff --git a/crypt/Makefile b/crypt/Makefile
|
||||||
|
index 303800df73..024ec2c6ab 100644
|
||||||
|
--- a/crypt/Makefile
|
||||||
|
+++ b/crypt/Makefile
|
||||||
|
@@ -22,6 +22,8 @@ subdir := crypt
|
||||||
|
|
||||||
|
include ../Makeconfig
|
||||||
|
|
||||||
|
+ifeq ($(build-obsolete-crypt),yes)
|
||||||
|
+
|
||||||
|
headers := crypt.h
|
||||||
|
|
||||||
|
extra-libs := libcrypt
|
||||||
|
@@ -52,9 +54,11 @@ tests += md5test sha256test sha512test
|
||||||
|
# machine over a minute.
|
||||||
|
xtests = md5test-giant
|
||||||
|
endif
|
||||||
|
+endif
|
||||||
|
|
||||||
|
include ../Rules
|
||||||
|
|
||||||
|
+ifeq ($(build-obsolete-crypt),yes)
|
||||||
|
ifneq ($(nss-crypt),yes)
|
||||||
|
md5-routines := md5 $(filter md5%,$(libcrypt-sysdep_routines))
|
||||||
|
sha256-routines := sha256 $(filter sha256%,$(libcrypt-sysdep_routines))
|
||||||
|
@@ -71,3 +75,4 @@ $(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.so
|
||||||
|
else
|
||||||
|
$(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.a
|
||||||
|
endif
|
||||||
|
+endif
|
||||||
|
diff --git a/elf/Makefile b/elf/Makefile
|
||||||
|
index 2a432d8bee..366f7b80ec 100644
|
||||||
|
--- a/elf/Makefile
|
||||||
|
+++ b/elf/Makefile
|
||||||
|
@@ -385,15 +385,19 @@ $(objpfx)tst-_dl_addr_inside_object: $(objpfx)dl-addr-obj.os
|
||||||
|
CFLAGS-tst-_dl_addr_inside_object.c += $(PIE-ccflag)
|
||||||
|
endif
|
||||||
|
|
||||||
|
-# By default tst-linkall-static should try to use crypt routines to test
|
||||||
|
-# static libcrypt use.
|
||||||
|
-CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=1
|
||||||
|
+ifeq ($(build-obsolete-crypt),yes)
|
||||||
|
+# If the libcrypt library is being built, tst-linkall-static should
|
||||||
|
+# try to use crypt routines to test static libcrypt use.
|
||||||
|
+CFLAGS-tst-linkall-static.c = -DUSE_CRYPT=1
|
||||||
|
# However, if we are using NSS crypto and we don't have a static
|
||||||
|
# library, then we exclude the use of crypt functions in the test.
|
||||||
|
# We similarly exclude libcrypt.a from the static link (see below).
|
||||||
|
ifeq (yesno,$(nss-crypt)$(static-nss-crypt))
|
||||||
|
CFLAGS-tst-linkall-static.c += -UUSE_CRYPT -DUSE_CRYPT=0
|
||||||
|
endif
|
||||||
|
+else
|
||||||
|
+CFLAGS-tst-linkall-static.c = -DUSE_CRYPT=0
|
||||||
|
+endif
|
||||||
|
|
||||||
|
include ../Rules
|
||||||
|
|
||||||
|
@@ -1113,8 +1117,10 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
|
||||||
|
rt/librt.so \
|
||||||
|
dlfcn/libdl.so \
|
||||||
|
resolv/libresolv.so \
|
||||||
|
- crypt/libcrypt.so \
|
||||||
|
)
|
||||||
|
+ifeq ($(build-obsolete-crypt),yes)
|
||||||
|
+localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
|
||||||
|
+endif
|
||||||
|
ifeq ($(build-mathvec),yes)
|
||||||
|
localplt-built-dso += $(addprefix $(common-objpfx), mathvec/libmvec.so)
|
||||||
|
endif
|
||||||
|
@@ -1395,6 +1401,7 @@ $(objpfx)tst-linkall-static: \
|
||||||
|
$(common-objpfx)resolv/libanl.a \
|
||||||
|
$(static-thread-library)
|
||||||
|
|
||||||
|
+ifeq ($(build-obsolete-crypt),yes)
|
||||||
|
# If we are using NSS crypto and we have the ability to link statically
|
||||||
|
# then we include libcrypt.a, otherwise we leave out libcrypt.a and
|
||||||
|
# link as much as we can into the tst-linkall-static test. This assumes
|
||||||
|
@@ -1410,6 +1417,7 @@ ifeq (no,$(nss-crypt))
|
||||||
|
$(objpfx)tst-linkall-static: \
|
||||||
|
$(common-objpfx)crypt/libcrypt.a
|
||||||
|
endif
|
||||||
|
+endif
|
||||||
|
|
||||||
|
# The application depends on the DSO, and the DSO loads the plugin.
|
||||||
|
# The plugin also depends on the DSO. This creates the circular
|
||||||
|
diff --git a/elf/tst-linkall-static.c b/elf/tst-linkall-static.c
|
||||||
|
index e8df38f74e..0ffae7c723 100644
|
||||||
|
--- a/elf/tst-linkall-static.c
|
||||||
|
+++ b/elf/tst-linkall-static.c
|
||||||
|
@@ -18,7 +18,9 @@
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
+#if USE_CRYPT
|
||||||
|
#include <crypt.h>
|
||||||
|
+#endif
|
||||||
|
#include <resolv.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
|
#include <utmp.h>
|
||||||
|
diff --git a/posix/unistd.h b/posix/unistd.h
|
||||||
|
index 4d149f9945..e75ce4d4ec 100644
|
||||||
|
--- a/posix/unistd.h
|
||||||
|
+++ b/posix/unistd.h
|
||||||
|
@@ -107,9 +107,6 @@ __BEGIN_DECLS
|
||||||
|
/* The X/Open Unix extensions are available. */
|
||||||
|
#define _XOPEN_UNIX 1
|
||||||
|
|
||||||
|
-/* Encryption is present. */
|
||||||
|
-#define _XOPEN_CRYPT 1
|
||||||
|
-
|
||||||
|
/* The enhanced internationalization capabilities according to XPG4.2
|
||||||
|
are present. */
|
||||||
|
#define _XOPEN_ENH_I18N 1
|
||||||
|
@@ -1118,20 +1115,7 @@ ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
|
||||||
|
extern int fdatasync (int __fildes);
|
||||||
|
#endif /* Use POSIX199309 */
|
||||||
|
|
||||||
|
-
|
||||||
|
-/* XPG4.2 specifies that prototypes for the encryption functions must
|
||||||
|
- be defined here. */
|
||||||
|
#ifdef __USE_XOPEN
|
||||||
|
-/* Encrypt at most 8 characters from KEY using salt to perturb DES. */
|
||||||
|
-extern char *crypt (const char *__key, const char *__salt)
|
||||||
|
- __THROW __nonnull ((1, 2));
|
||||||
|
-
|
||||||
|
-/* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
|
||||||
|
- block in place. */
|
||||||
|
-extern void encrypt (char *__glibc_block, int __edflag)
|
||||||
|
- __THROW __nonnull ((1));
|
||||||
|
-
|
||||||
|
-
|
||||||
|
/* Swab pairs bytes in the first N bytes of the area pointed to by
|
||||||
|
FROM and copy the result to TO. The value of TO must not be in the
|
||||||
|
range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM
|
||||||
|
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
|
||||||
|
index 6b1ead31e0..8e23e93557 100644
|
||||||
|
--- a/stdlib/stdlib.h
|
||||||
|
+++ b/stdlib/stdlib.h
|
||||||
|
@@ -958,12 +958,6 @@ extern int getsubopt (char **__restrict __optionp,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
-#ifdef __USE_XOPEN
|
||||||
|
-/* Setup DES tables according KEY. */
|
||||||
|
-extern void setkey (const char *__key) __THROW __nonnull ((1));
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
-
|
||||||
|
/* X/Open pseudo terminal handling. */
|
||||||
|
|
||||||
|
#ifdef __USE_XOPEN2KXSI
|
||||||
|
diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
|
||||||
|
index a6d08f3a00..d8b8297fb0 100644
|
||||||
|
--- a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
|
||||||
|
+++ b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
|
||||||
|
@@ -1,6 +1,8 @@
|
||||||
|
ifeq ($(subdir),crypt)
|
||||||
|
+ifeq ($(build-obsolete-crypt),yes)
|
||||||
|
libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop
|
||||||
|
endif
|
||||||
|
+endif
|
||||||
|
|
||||||
|
ifeq ($(subdir),locale)
|
||||||
|
localedef-aux += md5-crop
|
||||||
|
diff --git a/sysdeps/sparc/sparc64/multiarch/Makefile b/sysdeps/sparc/sparc64/multiarch/Makefile
|
||||||
|
index eaf758e7aa..0198f9886f 100644
|
||||||
|
--- a/sysdeps/sparc/sparc64/multiarch/Makefile
|
||||||
|
+++ b/sysdeps/sparc/sparc64/multiarch/Makefile
|
||||||
|
@@ -1,6 +1,8 @@
|
||||||
|
ifeq ($(subdir),crypt)
|
||||||
|
+ifeq ($(build-obsolete-crypt),yes)
|
||||||
|
libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop
|
||||||
|
endif
|
||||||
|
+endif
|
||||||
|
|
||||||
|
ifeq ($(subdir),locale)
|
||||||
|
localedef-aux += md5-crop
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/arm/Makefile b/sysdeps/unix/sysv/linux/arm/Makefile
|
||||||
|
index 4adc35de04..6cab4f3a31 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/arm/Makefile
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/arm/Makefile
|
||||||
|
@@ -19,8 +19,10 @@ endif
|
||||||
|
# Add a syscall function to each library that needs one.
|
||||||
|
|
||||||
|
ifeq ($(subdir),crypt)
|
||||||
|
+ifeq ($(build-obsolete-crypt),yes)
|
||||||
|
libcrypt-sysdep_routines += libc-do-syscall
|
||||||
|
endif
|
||||||
|
+endif
|
||||||
|
|
||||||
|
ifeq ($(subdir),rt)
|
||||||
|
librt-sysdep_routines += libc-do-syscall
|
||||||
|
--
|
||||||
|
2.16.0
|
||||||
|
|
37
glibc.spec
37
glibc.spec
@ -1,6 +1,6 @@
|
|||||||
%define glibcsrcdir glibc-2.26.9000-1140-g4612268a0a
|
%define glibcsrcdir glibc-2.26.9000-1140-g4612268a0a
|
||||||
%define glibcversion 2.26.9000
|
%define glibcversion 2.26.9000
|
||||||
%define glibcrelease 45%{?dist}
|
%define glibcrelease 46%{?dist}
|
||||||
# Pre-release tarballs are pulled in from git using a command that is
|
# Pre-release tarballs are pulled in from git using a command that is
|
||||||
# effectively:
|
# effectively:
|
||||||
#
|
#
|
||||||
@ -34,6 +34,8 @@
|
|||||||
%bcond_without docs
|
%bcond_without docs
|
||||||
# Default: Always run valgrind tests
|
# Default: Always run valgrind tests
|
||||||
%bcond_without valgrind
|
%bcond_without valgrind
|
||||||
|
# Default: Do NOT build deprecated libcrypt.
|
||||||
|
%bcond_with libcrypt
|
||||||
|
|
||||||
# Run a valgrind smoke test to ensure that the release is compatible and
|
# Run a valgrind smoke test to ensure that the release is compatible and
|
||||||
# doesn't any new feature that might cause valgrind to abort.
|
# doesn't any new feature that might cause valgrind to abort.
|
||||||
@ -217,6 +219,12 @@ Patch2037: glibc-rh1315108.patch
|
|||||||
Patch2040: glibc-rh1452750-allocate_once.patch
|
Patch2040: glibc-rh1452750-allocate_once.patch
|
||||||
Patch2041: glibc-rh1452750-libidn2.patch
|
Patch2041: glibc-rh1452750-libidn2.patch
|
||||||
|
|
||||||
|
%if %{without libcrypt}
|
||||||
|
# https://sourceware.org/ml/libc-alpha/2017-08/msg01257.html
|
||||||
|
# https://fedoraproject.org/wiki/Changes/Replace_glibc_libcrypt_with_libxcrypt
|
||||||
|
Patch2042: glibc-deprecate_libcrypt.patch
|
||||||
|
%endif
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# End of glibc patches.
|
# End of glibc patches.
|
||||||
##############################################################################
|
##############################################################################
|
||||||
@ -349,6 +357,7 @@ Linux system will not function.
|
|||||||
# libcrypt subpackage
|
# libcrypt subpackage
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
|
%if %{with libcrypt}
|
||||||
%package -n libcrypt
|
%package -n libcrypt
|
||||||
Summary: Password hashing library
|
Summary: Password hashing library
|
||||||
Requires: %{name}%{_isa} = %{version}-%{release}
|
Requires: %{name}%{_isa} = %{version}-%{release}
|
||||||
@ -364,6 +373,7 @@ hashing.
|
|||||||
|
|
||||||
%postun -n libcrypt
|
%postun -n libcrypt
|
||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
|
%endif
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# libnsl subpackage
|
# libnsl subpackage
|
||||||
@ -396,7 +406,12 @@ Requires(pre): %{name}-headers
|
|||||||
Requires: %{name}-headers = %{version}-%{release}
|
Requires: %{name}-headers = %{version}-%{release}
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{version}-%{release}
|
||||||
Requires: libgcc%{_isa}
|
Requires: libgcc%{_isa}
|
||||||
|
%if %{with libcrypt}
|
||||||
Requires: libcrypt%{_isa}
|
Requires: libcrypt%{_isa}
|
||||||
|
%endif
|
||||||
|
%if %{without bootstrap} && %{without libcrypt}
|
||||||
|
Requires: libxcrypt-devel%{_isa} >= 4.0.0
|
||||||
|
%endif
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
The glibc-devel package contains the object files necessary
|
The glibc-devel package contains the object files necessary
|
||||||
@ -415,6 +430,9 @@ use the standard C libraries.
|
|||||||
%package static
|
%package static
|
||||||
Summary: C library static libraries for -static linking.
|
Summary: C library static libraries for -static linking.
|
||||||
Requires: %{name}-devel = %{version}-%{release}
|
Requires: %{name}-devel = %{version}-%{release}
|
||||||
|
%if %{without bootstrap} && %{without libcrypt}
|
||||||
|
Requires: libxcrypt-static%{?_isa} >= 4.0.0
|
||||||
|
%endif
|
||||||
|
|
||||||
%description static
|
%description static
|
||||||
The glibc-static package contains the C library static libraries
|
The glibc-static package contains the C library static libraries
|
||||||
@ -746,6 +764,9 @@ microbenchmark tests on the system.
|
|||||||
%patch2037 -p1
|
%patch2037 -p1
|
||||||
%patch2040 -p1
|
%patch2040 -p1
|
||||||
%patch2041 -p1
|
%patch2041 -p1
|
||||||
|
%if %{without libcrypt}
|
||||||
|
%patch2042 -p1
|
||||||
|
%endif
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# %%prep - Additional prep required...
|
# %%prep - Additional prep required...
|
||||||
@ -1443,10 +1464,12 @@ sed -i -e '\,/libnss_.*\.so[0-9.]*$,d' \
|
|||||||
# Restore the built-in NSS modules.
|
# Restore the built-in NSS modules.
|
||||||
cat nss_files.filelist nss_dns.filelist nss_compat.filelist >> rpm.filelist
|
cat nss_files.filelist nss_dns.filelist nss_compat.filelist >> rpm.filelist
|
||||||
|
|
||||||
|
%if %{with libcrypt}
|
||||||
# Prepare the libcrypt-related file lists.
|
# Prepare the libcrypt-related file lists.
|
||||||
grep '/libcrypt-[0-9.]*.so$' rpm.filelist > libcrypt.filelist
|
grep '/libcrypt-[0-9.]*.so$' rpm.filelist > libcrypt.filelist
|
||||||
test $(wc -l < libcrypt.filelist) -eq 1
|
test $(wc -l < libcrypt.filelist) -eq 1
|
||||||
sed -i -e '\,/libcrypt,d' rpm.filelist
|
sed -i -e '\,/libcrypt,d' rpm.filelist
|
||||||
|
%endif
|
||||||
|
|
||||||
# Prepare the libnsl-related file lists.
|
# Prepare the libnsl-related file lists.
|
||||||
grep '/libnsl-[0-9.]*.so$' rpm.filelist > libnsl.filelist
|
grep '/libnsl-[0-9.]*.so$' rpm.filelist > libnsl.filelist
|
||||||
@ -1568,8 +1591,10 @@ find_debuginfo_args="$find_debuginfo_args \
|
|||||||
-p '.*/(sbin|libexec)/.*' \
|
-p '.*/(sbin|libexec)/.*' \
|
||||||
-o debuginfocommon.filelist \
|
-o debuginfocommon.filelist \
|
||||||
-l nss_db.filelist -l nss_hesiod.filelist \
|
-l nss_db.filelist -l nss_hesiod.filelist \
|
||||||
-l libcrypt.filelist -l libnsl.filelist \
|
%if %{with libcrypt}
|
||||||
-l rpm.filelist \
|
-l libcrypt.filelist \
|
||||||
|
%endif
|
||||||
|
-l libnsl.filelist -l rpm.filelist \
|
||||||
%if %{with benchtests}
|
%if %{with benchtests}
|
||||||
-l benchtests.filelist
|
-l benchtests.filelist
|
||||||
%endif
|
%endif
|
||||||
@ -1985,9 +2010,11 @@ fi
|
|||||||
%doc hesiod/README.hesiod
|
%doc hesiod/README.hesiod
|
||||||
%files -f nss-devel.filelist nss-devel
|
%files -f nss-devel.filelist nss-devel
|
||||||
|
|
||||||
|
%if %{with libcrypt}
|
||||||
%files -f libcrypt.filelist -n libcrypt
|
%files -f libcrypt.filelist -n libcrypt
|
||||||
%doc documentation/README.ufc-crypt
|
%doc documentation/README.ufc-crypt
|
||||||
%ghost /%{_lib}/libcrypt.so.1
|
%ghost /%{_lib}/libcrypt.so.1
|
||||||
|
%endif
|
||||||
|
|
||||||
%files -f libnsl.filelist -n libnsl
|
%files -f libnsl.filelist -n libnsl
|
||||||
/%{_lib}/libnsl.so.1
|
/%{_lib}/libnsl.so.1
|
||||||
@ -2009,6 +2036,10 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jan 19 2018 Björn Esser <besser82@fedoraproject.org> - 2.26.9000-45
|
||||||
|
- Remove deprecated libcrypt, gets replaced by libxcrypt
|
||||||
|
- Add applicable Requires on libxcrypt
|
||||||
|
|
||||||
* Fri Jan 19 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-45
|
* Fri Jan 19 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-45
|
||||||
- Drop static PIE support on aarch64. It leads to crashes at run time.
|
- Drop static PIE support on aarch64. It leads to crashes at run time.
|
||||||
- Remove glibc-rpcgen subpackage. See rpcsvc-proto. (#1531540)
|
- Remove glibc-rpcgen subpackage. See rpcsvc-proto. (#1531540)
|
||||||
|
Loading…
Reference in New Issue
Block a user