The functions encrypt, setkey, encrypt_r, setkey_r, cbc_crypt,
ecb_crypt, and des_setparity should not be used in new programs,
because they use the DES block cipher, which is unacceptably weak by
modern standards. Demote all of them to compatibility symbols, and
remove their prototypes from installed headers. cbc_crypt, ecb_crypt,
and des_setparity were already compat symbols when glibc was
configured with --disable-obsolete-rpc.
POSIX requires encrypt and setkey to be available when _XOPEN_CRYPT
is defined, so this change also removes the definition of X_OPEN_CRYPT
from <unistd.h>.
The entire "DES Encryption" section is dropped from the manual, as is
the mention of AUTH_DES and FIPS 140-2 in the introduction to
crypt.texi. The documentation of 'memfrob' cross-referenced the DES
Encryption section, which is replaced by a hyperlink to libgcrypt, and
while I was in there I spruced up the actual documentation of
'memfrob' and 'strfry' a little. It's still fairly jokey, because
those functions _are_ jokes, but they do also have real use cases, so
people trying to use them for real should have all the information
they need.
DES-based authentication for Sun RPC is also insecure and should be
deprecated or even removed, but maybe that can be left as TI-RPC's
problem.
The conform/ tests test -D_XOPEN_SOURCE under the name "XPG3", and
-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED under the name "XPG4".
That naming is misleading. _XOPEN_SOURCE_EXTENDED actually means
XPG4.2, including UX-shaded interfaces. _XOPEN_SOURCE actually means
XPG4, or XPG4.2 without UX-shaded interfaces. (Prior XPG versions
also used _XOPEN_SOURCE, but without any versioning of the values of
the macro, so XPG4.2 without UX-shaded interfaces is the only sensible
set of interfaces for glibc to expose given _XOPEN_SOURCE=1 without
_XOPEN_SOURCE_EXTENDED defined.)
This patch fixes the naming in the conform/ tests, so that what is now
called XPG4 is changed to XPG42, and what is now called XPG3 is
changed to XPG4.
Tested for x86_64 (and verified the complete set of expectations is
unchanged by the patch beyond the intended renaming).
* conform/GlibcConform.pm (XPG4): Rename standard to XPG42.
(XPG3): Rename standard to XPG4.
* conform/Makefile: Likewise.
* conform/list-header-symbols.pl: Likewise.
* conform/data/aio.h-data: Likewise.
* conform/data/arpa/inet.h-data: Likewise.
* conform/data/complex.h-data: Likewise.
* conform/data/ctype.h-data: Likewise.
* conform/data/dlfcn.h-data: Likewise.
* conform/data/fcntl.h-data: Likewise.
* conform/data/fenv.h-data: Likewise.
* conform/data/float.h-data: Likewise.
* conform/data/fmtmsg.h-data: Likewise.
* conform/data/ftw.h-data: Likewise.
* conform/data/grp.h-data: Likewise.
* conform/data/inttypes.h-data: Likewise.
* conform/data/iso646.h-data: Likewise.
* conform/data/langinfo.h-data: Likewise.
* conform/data/libgen.h-data: Likewise.
* conform/data/limits.h-data: Likewise.
* conform/data/locale.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/mqueue.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/net/if.h-data: Likewise.
* conform/data/netdb.h-data: Likewise.
* conform/data/netinet/in.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/pwd.h-data: Likewise.
* conform/data/sched.h-data: Likewise.
* conform/data/search.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/spawn.h-data: Likewise.
* conform/data/stdbool.h-data: Likewise.
* conform/data/stdint.h-data: Likewise.
* conform/data/stdio.h-data: Likewise.
* conform/data/stdlib.h-data: Likewise.
* conform/data/string.h-data: Likewise.
* conform/data/strings.h-data: Likewise.
* conform/data/stropts.h-data: Likewise.
* conform/data/sys/mman.h-data: Likewise.
* conform/data/sys/resource.h-data: Likewise.
* conform/data/sys/select.h-data: Likewise.
* conform/data/sys/socket.h-data: Likewise.
* conform/data/sys/stat.h-data: Likewise.
* conform/data/sys/statvfs.h-data: Likewise.
* conform/data/sys/time.h-data: Likewise.
* conform/data/sys/timeb.h-data: Likewise.
* conform/data/sys/types.h-data: Likewise.
* conform/data/sys/uio.h-data: Likewise.
* conform/data/sys/un.h-data: Likewise.
* conform/data/sys/wait.h-data: Likewise.
* conform/data/syslog.h-data: Likewise.
* conform/data/termios.h-data: Likewise.
* conform/data/tgmath.h-data: Likewise.
* conform/data/time.h-data: Likewise.
* conform/data/ucontext.h-data: Likewise.
* conform/data/unistd.h-data: Likewise.
* conform/data/utmpx.h-data: Likewise.
* conform/data/varargs.h-data: Likewise.
* conform/data/wchar.h-data: Likewise.
* conform/data/wctype.h-data: Likewise.
This patch corrects some spurious conformtest stdlib.h expectations
for XPG3 (not based on a full review of the expectations for that
standard, so other issues may remain).
Tested for x86_64 and x86.
* conform/data/stdlib.h-data (a64l): Do not expect for [XPG3].
(ecvt): Likewise.
(fcvt): Likewise.
(gcvt): Likewise.
(getsubopt): Likewise.
(grantpt): Likewise.
(initstate): Likewise.
(l64a): Likewise.
(mktemp): Likewise.
(mkstemp): Likewise.
(ptsname): Likewise.
(random): Likewise.
(realpath): Likewise.
(setstate): Likewise.
(srandom): Likewise.
(ttyslot): Likewise.
(unlockpt): Likewise.
(valloc): Likewise.
Continuing the series of patches to clean up conformtest expectations
for "POSIX" (1995/6) based on review of the expectations against the
standard, this patch cleans up expectations for stdlib.h and
string.h. Tested x86_64; no new XFAILs needed.
* conform/data/stdlib.h-data [POSIX] (stddef.h): Do not allow
header inclusion.
[POSIX] (limits.h): Likewise.
[POSIX] (math.h): Likewise.
[POSIX] (sys/wait.h): Likewise.
* conform/data/string.h-data [POSIX || UNIX98] (strtok_r): Require
function.
[POSIX] (stddef.h): Do not allow header inclusion.
* conform/data/stdlib.h-data: Account for XPG6 changes.
* stdlib/stdlib.h (__random): Change return value type to long.
(posix_memalign): Cleanup parameter names.
(setenv, unsetenv): Make available for __USE_XOPEN2K.
Change return type of unsetenv to int.
(qecvt, qgcvt, qfcvt): Declare only if __USE_MISC.
* sysdeps/generic/setenv.c (unsetenv): Change return type to int.
Return -1 and set errno if parameter is invalid.
* stdlib/random.c (__random): Change return value type to long.
* conform/data/tar.h-data: Add some checks for specific values.
* conform/data/stdlib.h-data: Add checks for value of EXIT_SUCCESS
and RAND_MAX.
* conform/data/stdio.h-data: Add checks for value of TMP_MAX and
FOPEN_MAX.
* conform/data/netinet/in.h-data: Add exact checks for the values
fo INET_ADDRSTRLEN and INET6_ADDRSTRLEN.
* conform/data/float.h-data: Add some minimal values.