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 - sch...@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 - dmuel...@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 - sch...@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 - 
lnus...@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 lnus...@suse.de
 Patch3:         crypt_blowfish-1.2-sha.diff
-# PATCH-FEATURE-OPENSUSE -- use separate symbol version for Owl extensions - 
lnus...@suse.de
-Patch4:         crypt_blowfish-1.2-versioning.diff
-# PATCH-FIX-OPENSUSE Avoid build failure on noexecstack marker on ARM 
dmuel...@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 
dmuel...@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 ku...@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 - 
lnus...@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 lnus...@suse.de
 Patch3:         crypt_blowfish-1.2-sha.diff
-# PATCH-FEATURE-OPENSUSE -- use separate symbol version for Owl extensions - 
lnus...@suse.de
-Patch4:         crypt_blowfish-1.2-versioning.diff
-# PATCH-FIX-OPENSUSE Avoid build failure on noexecstack marker on ARM 
dmuel...@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 
dmuel...@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 ku...@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+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to