Hello community, here is the log from the commit of package glibc for openSUSE:Factory checked in at 2013-07-11 13:28:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/glibc (Old) and /work/SRC/openSUSE:Factory/.glibc.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "glibc" Changes: -------- --- /work/SRC/openSUSE:Factory/glibc/glibc-testsuite.changes 2013-06-21 10:52:24.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.glibc.new/glibc-testsuite.changes 2013-07-11 13:28:21.000000000 +0200 @@ -1,0 +2,16 @@ +Thu Jul 4 12:14:27 UTC 2013 - schwab@suse.de + +- crypt_blowfish-gensalt.patch: separare crypt_gensalt into its own + library libowcrypt, remove crypt_rn and crypt_ra (fate#314945) +- glibc-2.14-crypt-versioning.diff, glibc-fix-check-abi.patch, + glibc-crypt-badsalttest.patch: folded into glibc-2.14-crypt.diff +- crypt_blowfish-const.patch: constify crypt_blowfish +- crypt_blowfish-1.2-sha.diff: refresh + +------------------------------------------------------------------- +Fri Jun 28 12:26:38 UTC 2013 - dmueller@suse.com + +- add ld-linux.so.3 compat symlink also for armv6hl +- remove deprecated armv7l + +------------------------------------------------------------------- glibc-utils.changes: same change --- /work/SRC/openSUSE:Factory/glibc/glibc.changes 2013-07-01 15:54:08.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.glibc.new/glibc.changes 2013-07-11 13:28:22.000000000 +0200 @@ -1,0 +2,10 @@ +Thu Jul 4 12:14:27 UTC 2013 - schwab@suse.de + +- crypt_blowfish-gensalt.patch: separare crypt_gensalt into its own + library libowcrypt, remove crypt_rn and crypt_ra (fate#314945) +- glibc-2.14-crypt-versioning.diff, glibc-fix-check-abi.patch, + glibc-crypt-badsalttest.patch: folded into glibc-2.14-crypt.diff +- crypt_blowfish-const.patch: constify crypt_blowfish +- crypt_blowfish-1.2-sha.diff: refresh + +------------------------------------------------------------------- Old: ---- crypt_blowfish-1.2-versioning.diff glibc-2.14-crypt-versioning.diff glibc-crypt-badsalttest.patch glibc-fix-check-abi.patch New: ---- crypt_blowfish-const.patch crypt_blowfish-gensalt.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ glibc-testsuite.spec ++++++ --- /var/tmp/diff_new_pack.8D23Zl/_old 2013-07-11 13:28:23.000000000 +0200 +++ /var/tmp/diff_new_pack.8D23Zl/_new 2013-07-11 13:28:23.000000000 +0200 @@ -141,7 +141,7 @@ %ifarch ppc Obsoletes: glibc-32bit %endif -%ifarch armv7l armv7hl +%ifarch armv6hl armv7hl # The old runtime linker link gets not provided by rpm find.provides, but it exists Provides: ld-linux.so.3 Provides: ld-linux.so.3(GLIBC_2.4) @@ -178,13 +178,13 @@ ### openSUSE extensions, configuration # PATCH-FEATURE-OPENSUSE -- add crypt_blowfish support - bnc#700876 Patch1: glibc-2.14-crypt.diff -# PATCH-FEATURE-OPENSUSE -- use separate symbol version for Owl extensions - lnussel@suse.de -Patch2: glibc-2.14-crypt-versioning.diff +# PATCH-FEATURE-OPENSUSE constify crypt_blowfish +Patch2: crypt_blowfish-const.patch # PATCH-FEATURE-OPENSUSE -- add sha support to crypt_blowfish lnussel@suse.de Patch3: crypt_blowfish-1.2-sha.diff -# PATCH-FEATURE-OPENSUSE -- use separate symbol version for Owl extensions - lnussel@suse.de -Patch4: crypt_blowfish-1.2-versioning.diff -# PATCH-FIX-OPENSUSE Avoid build failure on noexecstack marker on ARM dmueller@suse.de +# PATCH-FEATURE-OPENSUSE Move crypt_gensalt_rn to separate library +Patch4: crypt_blowfish-gensalt.patch +# PATCH-FEATURE-OPENSUSE Avoid build failure on noexecstack marker on ARM dmueller@suse.de Patch5: crypt_blowfish-1.2-hack_around_arm.diff # PATCH-FIX-OPENSUSE Fix path for nscd databases Patch6: glibc-2.3.3-nscd-db-path.diff @@ -208,10 +208,6 @@ Patch15: glibc-2.3.90-langpackdir.diff # PATCH-FEATURE-SLE increase cpusetsize to 4096, needs to be kept for compatibility kukuk@suse.de (XXX: Review) Patch18: glibc-cpusetsize.diff -# PATCH-FIX-OPENSUSE Fix check abi for crypt additions -Patch21: glibc-fix-check-abi.patch -# PATCH-FIX-OPENSUSE Disable badsalttest which expects that crypt can fail -Patch22: glibc-crypt-badsalttest.patch ### Locale related patches # PATCH-FIX-OPENSUSE Add additional locales @@ -439,6 +435,7 @@ # Owl crypt_blowfish tar -xzf %SOURCE50 pushd crypt_blowfish-%{crypt_bf_version} +%patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 @@ -447,7 +444,6 @@ mv crypt_blowfish-%crypt_bf_version/*.[chS] crypt/ # %patch1 -p1 -%patch2 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 @@ -464,8 +460,6 @@ %patch14 -p1 %patch15 -p1 %patch18 -p1 -%patch21 -p1 -%patch22 -p1 %patch100 -p1 %patch101 -p1 @@ -939,7 +933,7 @@ mkdir -p %{buildroot}/usr/lib/systemd/system install -m 644 %{SOURCE21} %{buildroot}/usr/lib/systemd/system -%ifarch armv7l armv7hl +%ifarch armv6hl armv7hl # Provide compatibility link ln -s ld-%{glibc_major_version}.so %{buildroot}/lib/ld-linux.so.3 %endif @@ -1068,7 +1062,7 @@ # Each architecture has a different name for the dynamic linker: %ifarch %arm -%ifarch armv7l armv7hl +%ifarch armv6hl armv7hl /%{_lib}/ld-linux-armhf.so.3 # Keep compatibility link /%{_lib}/ld-linux.so.3 @@ -1111,6 +1105,8 @@ /%{_lib}/libcidn.so.1 /%{_lib}/libcrypt-%{glibc_major_version}.so /%{_lib}/libcrypt.so.1 +/%{_lib}/libowcrypt-%{glibc_major_version}.so +/%{_lib}/libowcrypt.so.1 /%{_lib}/libdl-%{glibc_major_version}.so /%{_lib}/libdl.so.2* /%{_lib}/libm-%{glibc_major_version}.so @@ -1237,6 +1233,7 @@ %{_libdir}/libanl.a %{_libdir}/libc.a %{_libdir}/libcrypt.a +%{_libdir}/libowcrypt.a %{_libdir}/libdl.a %{_libdir}/libm.a %{_libdir}/libnsl.a @@ -1284,6 +1281,7 @@ %{_libdir}/libanl_p.a %{_libdir}/libm_p.a %{_libdir}/libcrypt_p.a +%{_libdir}/libowcrypt_p.a %{_libdir}/libpthread_p.a %{_libdir}/libresolv_p.a %{_libdir}/libnsl_p.a glibc-utils.spec: same change ++++++ glibc.spec ++++++ --- /var/tmp/diff_new_pack.8D23Zl/_old 2013-07-11 13:28:23.000000000 +0200 +++ /var/tmp/diff_new_pack.8D23Zl/_new 2013-07-11 13:28:23.000000000 +0200 @@ -178,13 +178,13 @@ ### openSUSE extensions, configuration # PATCH-FEATURE-OPENSUSE -- add crypt_blowfish support - bnc#700876 Patch1: glibc-2.14-crypt.diff -# PATCH-FEATURE-OPENSUSE -- use separate symbol version for Owl extensions - lnussel@suse.de -Patch2: glibc-2.14-crypt-versioning.diff +# PATCH-FEATURE-OPENSUSE constify crypt_blowfish +Patch2: crypt_blowfish-const.patch # PATCH-FEATURE-OPENSUSE -- add sha support to crypt_blowfish lnussel@suse.de Patch3: crypt_blowfish-1.2-sha.diff -# PATCH-FEATURE-OPENSUSE -- use separate symbol version for Owl extensions - lnussel@suse.de -Patch4: crypt_blowfish-1.2-versioning.diff -# PATCH-FIX-OPENSUSE Avoid build failure on noexecstack marker on ARM dmueller@suse.de +# PATCH-FEATURE-OPENSUSE Move crypt_gensalt_rn to separate library +Patch4: crypt_blowfish-gensalt.patch +# PATCH-FEATURE-OPENSUSE Avoid build failure on noexecstack marker on ARM dmueller@suse.de Patch5: crypt_blowfish-1.2-hack_around_arm.diff # PATCH-FIX-OPENSUSE Fix path for nscd databases Patch6: glibc-2.3.3-nscd-db-path.diff @@ -208,10 +208,6 @@ Patch15: glibc-2.3.90-langpackdir.diff # PATCH-FEATURE-SLE increase cpusetsize to 4096, needs to be kept for compatibility kukuk@suse.de (XXX: Review) Patch18: glibc-cpusetsize.diff -# PATCH-FIX-OPENSUSE Fix check abi for crypt additions -Patch21: glibc-fix-check-abi.patch -# PATCH-FIX-OPENSUSE Disable badsalttest which expects that crypt can fail -Patch22: glibc-crypt-badsalttest.patch ### Locale related patches # PATCH-FIX-OPENSUSE Add additional locales @@ -439,6 +435,7 @@ # Owl crypt_blowfish tar -xzf %SOURCE50 pushd crypt_blowfish-%{crypt_bf_version} +%patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 @@ -447,7 +444,6 @@ mv crypt_blowfish-%crypt_bf_version/*.[chS] crypt/ # %patch1 -p1 -%patch2 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 @@ -464,8 +460,6 @@ %patch14 -p1 %patch15 -p1 %patch18 -p1 -%patch21 -p1 -%patch22 -p1 %patch100 -p1 %patch101 -p1 @@ -1111,6 +1105,8 @@ /%{_lib}/libcidn.so.1 /%{_lib}/libcrypt-%{glibc_major_version}.so /%{_lib}/libcrypt.so.1 +/%{_lib}/libowcrypt-%{glibc_major_version}.so +/%{_lib}/libowcrypt.so.1 /%{_lib}/libdl-%{glibc_major_version}.so /%{_lib}/libdl.so.2* /%{_lib}/libm-%{glibc_major_version}.so @@ -1237,6 +1233,7 @@ %{_libdir}/libanl.a %{_libdir}/libc.a %{_libdir}/libcrypt.a +%{_libdir}/libowcrypt.a %{_libdir}/libdl.a %{_libdir}/libm.a %{_libdir}/libnsl.a @@ -1284,6 +1281,7 @@ %{_libdir}/libanl_p.a %{_libdir}/libm_p.a %{_libdir}/libcrypt_p.a +%{_libdir}/libowcrypt_p.a %{_libdir}/libpthread_p.a %{_libdir}/libresolv_p.a %{_libdir}/libnsl_p.a ++++++ crypt_blowfish-1.2-sha.diff ++++++ --- /var/tmp/diff_new_pack.8D23Zl/_old 2013-07-11 13:28:23.000000000 +0200 +++ /var/tmp/diff_new_pack.8D23Zl/_new 2013-07-11 13:28:23.000000000 +0200 @@ -9,11 +9,11 @@ wrapper.c | 23 +++++++++++++++++++++ 3 files changed, 95 insertions(+), 0 deletions(-) -diff --git a/crypt.3 b/crypt.3 -index e2f25bd..40a3538 100644 ---- a/crypt.3 -+++ b/crypt.3 -@@ -399,6 +399,20 @@ too low for the currently available hardware. +Index: crypt_blowfish-1.2/crypt.3 +=================================================================== +--- crypt_blowfish-1.2.orig/crypt.3 ++++ crypt_blowfish-1.2/crypt.3 +@@ -399,6 +399,20 @@ too low for the currently available hard .hash "$1$" "\e$1\e$[^$]{1,8}\e$[./0-9A-Za-z]{22}" unlimited 8 "" 128 "6 to 48" 1000 .PP .ti -2 @@ -34,10 +34,10 @@ .BR "OpenBSD-style Blowfish-based" " (" bcrypt ) .br .B bcrypt -diff --git a/crypt_gensalt.c b/crypt_gensalt.c -index 73c15a1..5cf9812 100644 ---- a/crypt_gensalt.c -+++ b/crypt_gensalt.c +Index: crypt_blowfish-1.2/crypt_gensalt.c +=================================================================== +--- crypt_blowfish-1.2.orig/crypt_gensalt.c ++++ crypt_blowfish-1.2/crypt_gensalt.c @@ -19,6 +19,7 @@ */ @@ -46,7 +46,7 @@ #include <errno.h> #ifndef __set_errno -@@ -122,3 +123,60 @@ char *_crypt_gensalt_md5_rn(const char *prefix, unsigned long count, +@@ -122,3 +123,60 @@ char *_crypt_gensalt_md5_rn(const char * return output; } @@ -107,19 +107,23 @@ + errno = ENOMEM; + return NULL; +} -diff --git a/wrapper.c b/wrapper.c -index 344053b..070d91d 100644 ---- a/wrapper.c -+++ b/wrapper.c -@@ -44,12 +44,18 @@ - - #include "crypt_blowfish.h" - #include "crypt_gensalt.h" +Index: crypt_blowfish-1.2/crypt_gensalt.h +=================================================================== +--- crypt_blowfish-1.2.orig/crypt_gensalt.h ++++ crypt_blowfish-1.2/crypt_gensalt.h +@@ -26,5 +26,7 @@ extern char *_crypt_gensalt_extended_rn( + const char *input, int size, char *output, int output_size); + extern char *_crypt_gensalt_md5_rn(const char *prefix, unsigned long count, + const char *input, int size, char *output, int output_size); +extern char *_crypt_gensalt_sha2_rn(const char *prefix, unsigned long count, + const char *input, int size, char *output, int output_size); - #if defined(__GLIBC__) && defined(_LIBC) - /* crypt.h from glibc-crypt-2.1 will define struct crypt_data for us */ + #endif +Index: crypt_blowfish-1.2/wrapper.c +=================================================================== +--- crypt_blowfish-1.2.orig/wrapper.c ++++ crypt_blowfish-1.2/wrapper.c +@@ -50,6 +50,10 @@ #include "crypt.h" extern char *__md5_crypt_r(const char *key, const char *salt, char *buffer, int buflen); @@ -130,7 +134,7 @@ /* crypt-entry.c needs to be patched to define __des_crypt_r rather than * __crypt_r, and not define crypt_r and crypt at all */ extern char *__des_crypt_r(const char *key, const char *salt, -@@ -112,6 +118,10 @@ static char *_crypt_retval_magic(char *retval, const char *setting, +@@ -112,6 +116,10 @@ static char *_crypt_retval_magic(char *r char *__crypt_rn(__const char *key, __const char *setting, void *data, int size) { @@ -141,7 +145,7 @@ if (setting[0] == '$' && setting[1] == '2') return _crypt_blowfish_rn(key, setting, (char *)data, size); if (setting[0] == '$' && setting[1] == '1') -@@ -129,6 +139,16 @@ char *__crypt_rn(__const char *key, __const char *setting, +@@ -129,6 +137,16 @@ char *__crypt_rn(__const char *key, __co char *__crypt_ra(__const char *key, __const char *setting, void **data, int *size) { @@ -158,7 +162,7 @@ if (setting[0] == '$' && setting[1] == '2') { if (_crypt_data_alloc(data, size, CRYPT_OUTPUT_SIZE)) return NULL; -@@ -210,6 +230,9 @@ char *__crypt_gensalt_rn(const char *prefix, unsigned long count, +@@ -210,6 +228,9 @@ char *__crypt_gensalt_rn(const char *pre return NULL; } @@ -168,6 +172,3 @@ if (!strncmp(prefix, "$2a$", 4) || !strncmp(prefix, "$2y$", 4)) use = _crypt_gensalt_blowfish_rn; else --- -1.7.3.4 - ++++++ crypt_blowfish-const.patch ++++++ Index: crypt_blowfish-1.2/crypt_blowfish.c =================================================================== --- crypt_blowfish-1.2.orig/crypt_blowfish.c +++ crypt_blowfish-1.2/crypt_blowfish.c @@ -81,7 +81,7 @@ typedef struct { * Magic IV for 64 Blowfish encryptions that we do at the end. * The string is "OrpheanBeholderScryDoubt" on big-endian. */ -static BF_word BF_magic_w[6] = { +static const BF_word BF_magic_w[6] = { 0x4F727068, 0x65616E42, 0x65686F6C, 0x64657253, 0x63727944, 0x6F756274 }; @@ -89,7 +89,7 @@ static BF_word BF_magic_w[6] = { /* * P-box and S-box tables initialized with digits of Pi. */ -static BF_ctx BF_init_state = { +static const BF_ctx BF_init_state = { { { 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, @@ -361,10 +361,10 @@ static BF_ctx BF_init_state = { } }; -static unsigned char BF_itoa64[64 + 1] = +static const unsigned char BF_itoa64[64 + 1] = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; -static unsigned char BF_atoi64[0x60] = { +static const unsigned char BF_atoi64[0x60] = { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, @@ -440,8 +440,8 @@ static void BF_encode(char *dst, const B static void BF_swap(BF_word *x, int count) { - static int endianness_check = 1; - char *is_little_endian = (char *)&endianness_check; + static const int endianness_check = 1; + const char *is_little_endian = (const char *)&endianness_check; BF_word tmp; if (*is_little_endian) ++++++ crypt_blowfish-gensalt.patch ++++++ Index: crypt_blowfish-1.2/compat-gensalt.c =================================================================== --- /dev/null +++ crypt_blowfish-1.2/compat-gensalt.c @@ -0,0 +1 @@ +#include "wrapper-gensalt.c" Index: crypt_blowfish-1.2/crypt_blowfish.c =================================================================== --- crypt_blowfish-1.2.orig/crypt_blowfish.c +++ crypt_blowfish-1.2/crypt_blowfish.c @@ -872,31 +872,3 @@ char *_crypt_blowfish_rn(const char *key __set_errno(EINVAL); /* pretend we don't support this hash type */ return NULL; } - -char *_crypt_gensalt_blowfish_rn(const char *prefix, unsigned long count, - const char *input, int size, char *output, int output_size) -{ - if (size < 16 || output_size < 7 + 22 + 1 || - (count && (count < 4 || count > 31)) || - prefix[0] != '$' || prefix[1] != '2' || - (prefix[2] != 'a' && prefix[2] != 'y')) { - if (output_size > 0) output[0] = '\0'; - __set_errno((output_size < 7 + 22 + 1) ? ERANGE : EINVAL); - return NULL; - } - - if (!count) count = 5; - - output[0] = '$'; - output[1] = '2'; - output[2] = prefix[2]; - output[3] = '$'; - output[4] = '0' + count / 10; - output[5] = '0' + count % 10; - output[6] = '$'; - - BF_encode(&output[7], (const BF_word *)input, 16); - output[7 + 22] = '\0'; - - return output; -} Index: crypt_blowfish-1.2/crypt_blowfish.h =================================================================== --- crypt_blowfish-1.2.orig/crypt_blowfish.h +++ crypt_blowfish-1.2/crypt_blowfish.h @@ -20,8 +20,5 @@ extern int _crypt_output_magic(const char *setting, char *output, int size); extern char *_crypt_blowfish_rn(const char *key, const char *setting, char *output, int size); -extern char *_crypt_gensalt_blowfish_rn(const char *prefix, - unsigned long count, - const char *input, int size, char *output, int output_size); #endif Index: crypt_blowfish-1.2/crypt_gensalt.c =================================================================== --- crypt_blowfish-1.2.orig/crypt_gensalt.c +++ crypt_blowfish-1.2/crypt_gensalt.c @@ -180,3 +180,69 @@ error: errno = ENOMEM; return NULL; } + + +typedef unsigned int BF_word; + +static const unsigned char BF_itoa64[64 + 1] = + "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + +static void BF_encode(char *dst, const BF_word *src, int size) +{ + const unsigned char *sptr = (const unsigned char *)src; + const unsigned char *end = sptr + size; + unsigned char *dptr = (unsigned char *)dst; + unsigned int c1, c2; + + do { + c1 = *sptr++; + *dptr++ = BF_itoa64[c1 >> 2]; + c1 = (c1 & 0x03) << 4; + if (sptr >= end) { + *dptr++ = BF_itoa64[c1]; + break; + } + + c2 = *sptr++; + c1 |= c2 >> 4; + *dptr++ = BF_itoa64[c1]; + c1 = (c2 & 0x0f) << 2; + if (sptr >= end) { + *dptr++ = BF_itoa64[c1]; + break; + } + + c2 = *sptr++; + c1 |= c2 >> 6; + *dptr++ = BF_itoa64[c1]; + *dptr++ = BF_itoa64[c2 & 0x3f]; + } while (sptr < end); +} + +char *_crypt_gensalt_blowfish_rn(const char *prefix, unsigned long count, + const char *input, int size, char *output, int output_size) +{ + if (size < 16 || output_size < 7 + 22 + 1 || + (count && (count < 4 || count > 31)) || + prefix[0] != '$' || prefix[1] != '2' || + (prefix[2] != 'a' && prefix[2] != 'y')) { + if (output_size > 0) output[0] = '\0'; + __set_errno((output_size < 7 + 22 + 1) ? ERANGE : EINVAL); + return NULL; + } + + if (!count) count = 5; + + output[0] = '$'; + output[1] = '2'; + output[2] = prefix[2]; + output[3] = '$'; + output[4] = '0' + count / 10; + output[5] = '0' + count % 10; + output[6] = '$'; + + BF_encode(&output[7], (const BF_word *)input, 16); + output[7 + 22] = '\0'; + + return output; +} Index: crypt_blowfish-1.2/crypt_gensalt.h =================================================================== --- crypt_blowfish-1.2.orig/crypt_gensalt.h +++ crypt_blowfish-1.2/crypt_gensalt.h @@ -28,5 +28,8 @@ extern char *_crypt_gensalt_md5_rn(const const char *input, int size, char *output, int output_size); extern char *_crypt_gensalt_sha2_rn(const char *prefix, unsigned long count, const char *input, int size, char *output, int output_size); +extern char *_crypt_gensalt_blowfish_rn(const char *prefix, + unsigned long count, + const char *input, int size, char *output, int output_size); #endif Index: crypt_blowfish-1.2/wrapper-gensalt.c =================================================================== --- /dev/null +++ crypt_blowfish-1.2/wrapper-gensalt.c @@ -0,0 +1,124 @@ +/* + * Written by Solar Designer <solar at openwall.com> in 2000-2011. + * No copyright is claimed, and the software is hereby placed in the public + * domain. In case this attempt to disclaim copyright and place the software + * in the public domain is deemed null and void, then the software is + * Copyright (c) 2000-2011 Solar Designer and it is hereby released to the + * general public under the following terms: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted. + * + * There's ABSOLUTELY NO WARRANTY, express or implied. + * + * See crypt_blowfish.c for more information. + */ + +#include <stdlib.h> +#include <string.h> + +#include <errno.h> +#ifndef __set_errno +#define __set_errno(val) errno = (val) +#endif + +#define CRYPT_GENSALT_OUTPUT_SIZE (7 + 22 + 1) + +#if defined(__GLIBC__) && defined(_LIBC) +#define __SKIP_GNU +#endif +#include "ow-crypt.h" + +#include "crypt_gensalt.h" + +#if !(defined(__GLIBC__) && defined(_LIBC)) +#define __crypt_gensalt_rn crypt_gensalt_rn +#define __crypt_gensalt_ra crypt_gensalt_ra +#define __crypt_gensalt crypt_gensalt +#endif + +char *__crypt_gensalt_rn(const char *prefix, unsigned long count, + const char *input, int size, char *output, int output_size) +{ + char *(*use)(const char *_prefix, unsigned long _count, + const char *_input, int _size, + char *_output, int _output_size); + + /* This may be supported on some platforms in the future */ + if (!input) { + __set_errno(EINVAL); + return NULL; + } + + if (!strncmp(prefix, "$5$", 3) || !strncmp(prefix, "$6$", 3)) + use = _crypt_gensalt_sha2_rn; + else + if (!strncmp(prefix, "$2a$", 4) || !strncmp(prefix, "$2y$", 4)) + use = _crypt_gensalt_blowfish_rn; + else + if (!strncmp(prefix, "$1$", 3)) + use = _crypt_gensalt_md5_rn; + else + if (prefix[0] == '_') + use = _crypt_gensalt_extended_rn; + else + if (!prefix[0] || + (prefix[0] && prefix[1] && + memchr(_crypt_itoa64, prefix[0], 64) && + memchr(_crypt_itoa64, prefix[1], 64))) + use = _crypt_gensalt_traditional_rn; + else { + __set_errno(EINVAL); + return NULL; + } + + return use(prefix, count, input, size, output, output_size); +} + +char *__crypt_gensalt_ra(const char *prefix, unsigned long count, + const char *input, int size) +{ + char output[CRYPT_GENSALT_OUTPUT_SIZE]; + char *retval; + + retval = __crypt_gensalt_rn(prefix, count, + input, size, output, sizeof(output)); + + if (retval) { + retval = strdup(retval); +#ifndef __GLIBC__ + /* strdup(3) on glibc sets errno, so we don't need to bother */ + if (!retval) + __set_errno(ENOMEM); +#endif + } + + return retval; +} + +char *__crypt_gensalt(const char *prefix, unsigned long count, + const char *input, int size) +{ + static char output[CRYPT_GENSALT_OUTPUT_SIZE]; + + return __crypt_gensalt_rn(prefix, count, + input, size, output, sizeof(output)); +} + +#if defined(__GLIBC__) && defined(_LIBC) +#if IS_IN_libowcrypt +weak_alias(__crypt_gensalt_rn, crypt_gensalt_rn) +weak_alias(__crypt_gensalt_ra, crypt_gensalt_ra) +weak_alias(__crypt_gensalt, crypt_gensalt) +#else +#include <shlib-compat.h> +#define ow_symbol(name) \ + symbol_version (__##name, name, OW_CRYPT_1.0); \ + hidden_ver (__##name, name) + +ow_symbol (crypt_gensalt) +ow_symbol (crypt_gensalt_rn) +ow_symbol (crypt_gensalt_ra) +#endif +#endif + Index: crypt_blowfish-1.2/wrapper.c =================================================================== --- crypt_blowfish-1.2.orig/wrapper.c +++ crypt_blowfish-1.2/wrapper.c @@ -35,7 +35,6 @@ #endif #define CRYPT_OUTPUT_SIZE (7 + 22 + 31 + 1) -#define CRYPT_GENSALT_OUTPUT_SIZE (7 + 22 + 1) #if defined(__GLIBC__) && defined(_LIBC) #define __SKIP_GNU @@ -43,7 +42,6 @@ #include "ow-crypt.h" #include "crypt_blowfish.h" -#include "crypt_gensalt.h" #if defined(__GLIBC__) && defined(_LIBC) /* crypt.h from glibc-crypt-2.1 will define struct crypt_data for us */ @@ -209,88 +207,11 @@ char *crypt(const char *key, const char crypt_rn(key, setting, output, sizeof(output)), setting, output, sizeof(output)); } - -#define __crypt_gensalt_rn crypt_gensalt_rn -#define __crypt_gensalt_ra crypt_gensalt_ra -#define __crypt_gensalt crypt_gensalt -#endif - -char *__crypt_gensalt_rn(const char *prefix, unsigned long count, - const char *input, int size, char *output, int output_size) -{ - char *(*use)(const char *_prefix, unsigned long _count, - const char *_input, int _size, - char *_output, int _output_size); - - /* This may be supported on some platforms in the future */ - if (!input) { - __set_errno(EINVAL); - return NULL; - } - - if (!strncmp(prefix, "$5$", 3) || !strncmp(prefix, "$6$", 3)) - use = _crypt_gensalt_sha2_rn; - else - if (!strncmp(prefix, "$2a$", 4) || !strncmp(prefix, "$2y$", 4)) - use = _crypt_gensalt_blowfish_rn; - else - if (!strncmp(prefix, "$1$", 3)) - use = _crypt_gensalt_md5_rn; - else - if (prefix[0] == '_') - use = _crypt_gensalt_extended_rn; - else - if (!prefix[0] || - (prefix[0] && prefix[1] && - memchr(_crypt_itoa64, prefix[0], 64) && - memchr(_crypt_itoa64, prefix[1], 64))) - use = _crypt_gensalt_traditional_rn; - else { - __set_errno(EINVAL); - return NULL; - } - - return use(prefix, count, input, size, output, output_size); -} - -char *__crypt_gensalt_ra(const char *prefix, unsigned long count, - const char *input, int size) -{ - char output[CRYPT_GENSALT_OUTPUT_SIZE]; - char *retval; - - retval = __crypt_gensalt_rn(prefix, count, - input, size, output, sizeof(output)); - - if (retval) { - retval = strdup(retval); -#ifndef __GLIBC__ - /* strdup(3) on glibc sets errno, so we don't need to bother */ - if (!retval) - __set_errno(ENOMEM); #endif - } - - return retval; -} - -char *__crypt_gensalt(const char *prefix, unsigned long count, - const char *input, int size) -{ - static char output[CRYPT_GENSALT_OUTPUT_SIZE]; - - return __crypt_gensalt_rn(prefix, count, - input, size, output, sizeof(output)); -} #if defined(__GLIBC__) && defined(_LIBC) -weak_alias(__crypt_rn, crypt_rn) -weak_alias(__crypt_ra, crypt_ra) weak_alias(__crypt_r, crypt_r) weak_alias(__crypt, crypt) -weak_alias(__crypt_gensalt_rn, crypt_gensalt_rn) -weak_alias(__crypt_gensalt_ra, crypt_gensalt_ra) -weak_alias(__crypt_gensalt, crypt_gensalt) weak_alias(crypt, fcrypt) #endif ++++++ glibc-2.14-crypt.diff ++++++ ++++ 630 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/glibc/glibc-2.14-crypt.diff ++++ and /work/SRC/openSUSE:Factory/.glibc.new/glibc-2.14-crypt.diff -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org