Accepting request 79227 from Base:System

Fix crash (access-after-free) in dl_lookup_x.  [bnc#703140];mark subpackages as noarch. (forwarded request 79226 from a_jaeger)

OBS-URL: https://build.opensuse.org/request/show/79227
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/glibc?expand=0&rev=73
This commit is contained in:
Sascha Peilicke 2011-08-18 14:00:14 +00:00 committed by Git OBS Bridge
commit 82ffc0352a
27 changed files with 408 additions and 857 deletions

View File

@ -13,16 +13,7 @@ Index: sysdeps/posix/getaddrinfo.c
{
const struct gaih_typeproto *tp = gaih_inet_typeproto;
struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
@@ -706,7 +706,7 @@ gaih_inet (const char *name, const struc
no_data = 0;
nss_gethostbyname4_r fct4
= __nss_lookup_function (nip, "gethostbyname4_r");
- if (fct4 != NULL)
+ if (fct4 != NULL && usable_ipv6)
{
int herrno;
@@ -763,7 +763,7 @@ gaih_inet (const char *name, const struc
@@ -766,7 +766,7 @@ gaih_inet (const char *name, const struc
if (fct != NULL)
{
if (req->ai_family == AF_INET6
@ -31,7 +22,7 @@ Index: sysdeps/posix/getaddrinfo.c
{
gethosts (AF_INET6, struct in6_addr);
no_inet6_data = no_data;
@@ -2156,7 +2156,7 @@ getaddrinfo (const char *name, const cha
@@ -2157,7 +2157,7 @@ getaddrinfo (const char *name, const cha
if (hints->ai_family == AF_UNSPEC || hints->ai_family == AF_INET
|| hints->ai_family == AF_INET6)
{

View File

@ -1,18 +0,0 @@
Index: nscd/nscd.h
===================================================================
--- nscd/nscd.h.orig
+++ nscd/nscd.h
@@ -59,7 +59,12 @@ typedef enum
/* Maximum size of stack frames we allow the thread to use. We use
80% of the thread stack size. */
-#define MAX_STACK_USE ((8 * NSCD_THREAD_STACKSIZE) / 10)
+// #define MAX_STACK_USE ((8 * NSCD_THREAD_STACKSIZE) / 10)
+/* alloca() calls use extra space on stack that we cannot reliably
+ account for, the optimization effect is not that big and they are
+ prone to hard-to-debug crashes. In short, they are much more trouble
+ than they are worth. */
+#define MAX_STACK_USE 0
/* Structure describing dynamic part of one database. */

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:023aef147d380f0e4ca2ff0617355b0ef69e41f00db7c463c800fabdb62e8faa
size 16381764

View File

@ -1,320 +0,0 @@
2011-05-11 Ulrich Drepper <drepper@gmail.com>
[BZ #12393]
* elf/dl-load.c (is_trusted_path): Remove unnecessary test.
(is_trusted_path_normalize): Skip initial colon. Append slash
to empty buffer. Duplicate is_trusted_path code but allow
constructed patch to be prefix.
(is_dst): Allow $ORIGIN followed by /.
(_dl_dst_substitute): Correct clearing of check_for_trusted.
Correct testing of result of is_trusted_path_normalize
(decompose_rpath): Fix warning.
2011-05-07 Petr Baudis <pasky@suse.cz>
Ulrich Drepper <drepper@gmail.com>
[BZ #12393]
* elf/dl-load.c (fillin_rpath): Move trusted path check...
(is_trusted_path): ...to here.
(is_trusted_path_normalize): Wrapper for /../ and /./ normalization.
(_dl_dst_substitute): Verify expanded $ORIGIN path elements
using is_trusted_path_normalize() in setuid scripts.
2011-03-14 Andreas Schwab <schwab@redhat.com>
* elf/dl-load.c (_dl_dst_substitute): When skipping the first
rpath element also skip the following colon.
(expand_dynamic_string_token): Add is_path parameter and pass
down to DL_DST_REQUIRED and _dl_dst_substitute.
(decompose_rpath): Call expand_dynamic_string_token with
non-zero is_path. Ignore empty rpaths.
(_dl_map_object_from_fd): Call expand_dynamic_string_token
with zero is_path.
2011-03-06 Ulrich Drepper <drepper@gmail.com>
* elf/dl-load.c (_dl_map_object): If we are looking for the first
to-be-loaded object along a path to loader is ld.so.
--- glibc-2.13/elf/dl-load.c 2011-05-20 21:53:43.766426054 +0200
+++ glibc-2.14/elf/dl-load.c 2011-05-31 09:59:16.781617374 +0200
@@ -1,5 +1,5 @@
/* Map in a shared object's segments from the file.
- Copyright (C) 1995-2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995-2007, 2009, 2010, 2011 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
@@ -168,6 +168,87 @@ local_strdup (const char *s)
}
+static bool
+is_trusted_path (const char *path, size_t len)
+{
+ const char *trun = system_dirs;
+
+ for (size_t idx = 0; idx < nsystem_dirs_len; ++idx)
+ {
+ if (len == system_dirs_len[idx] && memcmp (trun, path, len) == 0)
+ /* Found it. */
+ return true;
+
+ trun += system_dirs_len[idx] + 1;
+ }
+
+ return false;
+}
+
+
+static bool
+is_trusted_path_normalize (const char *path, size_t len)
+{
+ if (len == 0)
+ return false;
+
+ if (*path == ':')
+ {
+ ++path;
+ --len;
+ }
+
+ char *npath = (char *) alloca (len + 2);
+ char *wnp = npath;
+ while (*path != '\0')
+ {
+ if (path[0] == '/')
+ {
+ if (path[1] == '.')
+ {
+ if (path[2] == '.' && (path[3] == '/' || path[3] == '\0'))
+ {
+ while (wnp > npath && *--wnp != '/')
+ ;
+ path += 3;
+ continue;
+ }
+ else if (path[2] == '/' || path[2] == '\0')
+ {
+ path += 2;
+ continue;
+ }
+ }
+
+ if (wnp > npath && wnp[-1] == '/')
+ {
+ ++path;
+ continue;
+ }
+ }
+
+ *wnp++ = *path++;
+ }
+
+ if (wnp == npath || wnp[-1] != '/')
+ *wnp++ = '/';
+
+ const char *trun = system_dirs;
+
+ for (size_t idx = 0; idx < nsystem_dirs_len; ++idx)
+ {
+ if (wnp - npath >= system_dirs_len[idx]
+ && memcmp (trun, npath, system_dirs_len[idx]) == 0)
+ /* Found it. */
+ return true;
+
+ trun += system_dirs_len[idx] + 1;
+ }
+
+ return false;
+}
+
+
static size_t
is_dst (const char *start, const char *name, const char *str,
int is_path, int secure)
@@ -200,7 +281,8 @@ is_dst (const char *start, const char *n
return 0;
if (__builtin_expect (secure, 0)
- && ((name[len] != '\0' && (!is_path || name[len] != ':'))
+ && ((name[len] != '\0' && name[len] != '/'
+ && (!is_path || name[len] != ':'))
|| (name != start + 1 && (!is_path || name[-2] != ':'))))
return 0;
@@ -240,13 +322,14 @@ _dl_dst_substitute (struct link_map *l,
int is_path)
{
const char *const start = name;
- char *last_elem, *wp;
/* Now fill the result path. While copying over the string we keep
track of the start of the last path element. When we come accross
a DST we copy over the value or (if the value is not available)
leave the entire path element out. */
- last_elem = wp = result;
+ char *wp = result;
+ char *last_elem = result;
+ bool check_for_trusted = false;
do
{
@@ -265,6 +348,9 @@ _dl_dst_substitute (struct link_map *l,
else
#endif
repl = l->l_origin;
+
+ check_for_trusted = (INTUSE(__libc_enable_secure)
+ && l->l_type == lt_executable);
}
else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0)
repl = GLRO(dl_platform);
@@ -284,6 +370,10 @@ _dl_dst_substitute (struct link_map *l,
name += len;
while (*name != '\0' && (!is_path || *name != ':'))
++name;
+ /* Also skip following colon if this is the first rpath
+ element, but keep an empty element at the end. */
+ if (wp == result && is_path && *name == ':' && name[1] != '\0')
+ ++name;
}
else
/* No DST we recognize. */
@@ -293,11 +383,28 @@ _dl_dst_substitute (struct link_map *l,
{
*wp++ = *name++;
if (is_path && *name == ':')
- last_elem = wp;
+ {
+ /* In SUID/SGID programs, after $ORIGIN expansion the
+ normalized path must be rooted in one of the trusted
+ directories. */
+ if (__builtin_expect (check_for_trusted, false)
+ && !is_trusted_path_normalize (last_elem, wp - last_elem))
+ wp = last_elem;
+ else
+ last_elem = wp;
+
+ check_for_trusted = false;
+ }
}
}
while (*name != '\0');
+ /* In SUID/SGID programs, after $ORIGIN expansion the normalized
+ path must be rooted in one of the trusted directories. */
+ if (__builtin_expect (check_for_trusted, false)
+ && !is_trusted_path_normalize (last_elem, wp - last_elem))
+ wp = last_elem;
+
*wp = '\0';
return result;
@@ -310,7 +417,7 @@ _dl_dst_substitute (struct link_map *l,
belonging to the map is loaded. In this case the path element
containing $ORIGIN is left out. */
static char *
-expand_dynamic_string_token (struct link_map *l, const char *s)
+expand_dynamic_string_token (struct link_map *l, const char *s, int is_path)
{
/* We make two runs over the string. First we determine how large the
resulting string is and then we copy it over. Since this is no
@@ -321,7 +428,7 @@ expand_dynamic_string_token (struct link
char *result;
/* Determine the number of DST elements. */
- cnt = DL_DST_COUNT (s, 1);
+ cnt = DL_DST_COUNT (s, is_path);
/* If we do not have to replace anything simply copy the string. */
if (__builtin_expect (cnt, 0) == 0)
@@ -335,7 +442,7 @@ expand_dynamic_string_token (struct link
if (result == NULL)
return NULL;
- return _dl_dst_substitute (l, s, result, 1);
+ return _dl_dst_substitute (l, s, result, is_path);
}
@@ -407,33 +514,8 @@ fillin_rpath (char *rpath, struct r_sear
cp[len++] = '/';
/* Make sure we don't use untrusted directories if we run SUID. */
- if (__builtin_expect (check_trusted, 0))
- {
- const char *trun = system_dirs;
- size_t idx;
- int unsecure = 1;
-
- /* All trusted directories must be complete names. */
- if (cp[0] == '/')
- {
- for (idx = 0; idx < nsystem_dirs_len; ++idx)
- {
- if (len == system_dirs_len[idx]
- && memcmp (trun, cp, len) == 0)
- {
- /* Found it. */
- unsecure = 0;
- break;
- }
-
- trun += system_dirs_len[idx] + 1;
- }
- }
-
- if (unsecure)
- /* Simply drop this directory. */
- continue;
- }
+ if (__builtin_expect (check_trusted, 0) && !is_trusted_path (cp, len))
+ continue;
/* See if this directory is already known. */
for (dirp = GL(dl_all_dirs); dirp != NULL; dirp = dirp->next)
@@ -551,13 +633,21 @@ decompose_rpath (struct r_search_path_st
/* Make a writable copy. At the same time expand possible dynamic
string tokens. */
- copy = expand_dynamic_string_token (l, rpath);
+ copy = expand_dynamic_string_token (l, rpath, 1);
if (copy == NULL)
{
errstring = N_("cannot create RUNPATH/RPATH copy");
goto signal_error;
}
+ /* Ignore empty rpaths. */
+ if (*copy == 0)
+ {
+ free (copy);
+ sps->dirs = (struct r_search_path_elem **) -1;
+ return false;
+ }
+
/* Count the number of necessary elements in the result array. */
nelems = 0;
for (cp = copy; *cp != '\0'; ++cp)
@@ -2109,7 +2201,9 @@ _dl_map_object (struct link_map *loader,
{
#ifdef SHARED
// XXX Correct to unconditionally default to namespace 0?
- l = loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded;
+ l = (loader
+ ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded
+ ?: &GL(dl_rtld_map));
#else
l = loader;
#endif
@@ -2175,7 +2269,7 @@ _dl_map_object (struct link_map *loader,
{
/* The path may contain dynamic string tokens. */
realname = (loader
- ? expand_dynamic_string_token (loader, name)
+ ? expand_dynamic_string_token (loader, name, 0)
: local_strdup (name));
if (realname == NULL)
fd = -1;

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:497c07f228208e8a0660ae5ee8919e4a6b5b59bb867891c7c02de8995310960e
size 15640100

View File

@ -1,6 +1,7 @@
For details see:
http://sourceware.org/bugzilla/show_bug.cgi?id=5379
Index: sunrpc/clnt_udp.c
===================================================================
--- sunrpc/clnt_udp.c.orig

View File

@ -1,72 +0,0 @@
Check:
http://sourceware.org/bugzilla/show_bug.cgi?id=10855
-------------------------------------------------------------------
Mon Oct 21 17:20:04 CEST 2002 - schwab@suse.de
- Fix alignment in locale-archive.
Index: locale/programs/locarchive.c
===================================================================
--- locale/programs/locarchive.c.orig
+++ locale/programs/locarchive.c
@@ -75,6 +75,9 @@ static const char *locnames[] =
#define RESERVE_MMAP_SIZE 512 * 1024 * 1024
+#define ALIGN(offset, alignment) \
+ (((offset) + (alignment) - 1) & -(alignment))
+
static void
create_archive (const char *archivefname, struct locarhandle *ah)
{
@@ -94,7 +97,8 @@ create_archive (const char *archivefname
/* Create the initial content of the archive. */
head.magic = AR_MAGIC;
head.serial = 0;
- head.namehash_offset = sizeof (struct locarhead);
+ head.namehash_offset = ALIGN (sizeof (struct locarhead),
+ __alignof__ (struct namehashent));
head.namehash_used = 0;
head.namehash_size = next_prime (INITIAL_NUM_NAMES);
@@ -103,12 +107,15 @@ create_archive (const char *archivefname
head.string_used = 0;
head.string_size = INITIAL_SIZE_STRINGS;
- head.locrectab_offset = head.string_offset + head.string_size;
+ head.locrectab_offset = ALIGN (head.string_offset + head.string_size,
+ __alignof__ (struct locrecent));
head.locrectab_used = 0;
head.locrectab_size = INITIAL_NUM_LOCREC;
- head.sumhash_offset = (head.locrectab_offset
- + head.locrectab_size * sizeof (struct locrecent));
+ head.sumhash_offset = ALIGN (head.locrectab_offset
+ + (head.locrectab_size
+ * sizeof (struct locrecent)),
+ __alignof__ (struct sumhashent));
head.sumhash_used = 0;
head.sumhash_size = next_prime (INITIAL_NUM_SUMS);
@@ -356,13 +363,16 @@ enlarge_archive (struct locarhandle *ah,
newhead.string_size = MAX ((2 * newhead.string_used + 3) & -4,
newhead.string_size);
- newhead.locrectab_offset = newhead.string_offset + newhead.string_size;
+ newhead.locrectab_offset = ALIGN (newhead.string_offset
+ + newhead.string_size,
+ __alignof__ (struct locrecent));
newhead.locrectab_size = MAX (2 * newhead.locrectab_used,
newhead.locrectab_size);
- newhead.sumhash_offset = (newhead.locrectab_offset
- + (newhead.locrectab_size
- * sizeof (struct locrecent)));
+ newhead.sumhash_offset = ALIGN (newhead.locrectab_offset
+ + (newhead.locrectab_size
+ * sizeof (struct locrecent)),
+ __alignof__ (struct sumhashent));
newhead.sumhash_size = MAX (next_prime (2 * newhead.sumhash_used),
newhead.sumhash_size);

View File

@ -2,7 +2,7 @@ Index: nscd/cache.c
===================================================================
--- nscd/cache.c.orig 2010-01-18 18:01:41.000000000 +0100
+++ nscd/cache.c 2010-02-14 14:58:08.000000000 +0100
@@ -267,28 +267,31 @@ prune_cache (struct database_dyn *table,
@@ -267,27 +267,29 @@
if (table->inotify_descr < 0 && table->check_file && now != LONG_MAX)
{
struct stat64 st;
@ -14,7 +14,7 @@ Index: nscd/cache.c
{
- char buf[128];
- /* We cannot stat() the file, disable file checking if the
- file does not exist. */
- file does not exist. */
- dbg_log (_("cannot stat() file `%s': %s"),
- table->filename, strerror_r (errno, buf, sizeof (buf)));
- if (errno == ENOENT)
@ -37,14 +37,12 @@ Index: nscd/cache.c
}
}
}
+ /* now == 0 means just check for changed files */
+ if (now == (time_t)0)
+ return 0;
+
/* We run through the table and find values which are not valid anymore.
Note that for the initial step, finding the entries to be removed,
Index: nscd/connections.c
===================================================================
--- nscd/connections.c.orig 2010-01-18 18:01:41.000000000 +0100

View File

@ -1,40 +0,0 @@
--- configure.in.orig 2011-05-20 15:36:44.880141789 +0200
+++ configure.in 2011-05-20 15:39:31.237690293 +0200
@@ -1406,7 +1406,7 @@
fi
fi
fi
- rm -f conftest.[cs]
+ rm -f conftest.*
])
if test $libc_cv_visibility_attribute != yes; then
AC_MSG_ERROR(compiler support for visibility attribute is required)
@@ -1422,7 +1422,7 @@
int bar (int x) { return x; }
EOF
libc_cv_broken_visibility_attribute=yes
- if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s >&AS_MESSAGE_LOG_FD); then
changequote(,)dnl
if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
changequote([,])dnl
--- configure.orig 2011-05-20 15:39:38.413972560 +0200
+++ configure 2011-05-20 15:40:52.292884126 +0200
@@ -6112,7 +6112,7 @@
int bar (int x) { return x; }
EOF
libc_cv_broken_visibility_attribute=yes
- if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s1>&5'
+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6753,7 +6753,7 @@
else
libc_cv_have_section_quotes=unknown
fi
- rm -f conftest.cs
+ rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_section_quotes" >&5

View File

@ -1,27 +0,0 @@
2011-03-02 Andreas Schwab <schwab@redhat.com>
[BZ #12454]
* elf/dl-deps.c (_dl_map_object_deps): Don't try to sort
dependencies when there are none.
--- a/elf/dl-deps.c.orig 2011-05-25 16:42:39.000000000 +0200
+++ a/elf/dl-deps.c 2011-05-25 16:44:07.000000000 +0200
@@ -619,7 +619,8 @@
/* We can skip looking for the binary itself which is at the front
of the search list. */
- assert (nlist > 1);
+ if (nlist > 1)
+ {
i = 1;
bool seen[nlist];
memset (seen, false, nlist * sizeof (seen[0]));
@@ -669,7 +670,7 @@
next:;
}
-
+ }
/* Terminate the list of dependencies. */
l_initfini[nlist] = NULL;
atomic_write_barrier ();

View File

@ -2,20 +2,20 @@ Index: bits/sched.h
===================================================================
--- bits/sched.h.orig
+++ bits/sched.h
@@ -38,7 +38,7 @@ struct sched_param
#if defined _SCHED_H && !defined __cpu_set_t_defined
# define __cpu_set_t_defined
/* Size definition for CPU sets. */
-# define __CPU_SETSIZE 1024
+# define __CPU_SETSIZE 4096
# define __NCPUBITS (8 * sizeof (__cpu_mask))
/* Type for array elements in 'cpu_set'. */
Index: sysdeps/unix/sysv/linux/bits/sched.h
===================================================================
--- sysdeps/unix/sysv/linux/bits/sched.h.orig
+++ sysdeps/unix/sysv/linux/bits/sched.h
@@ -106,7 +106,7 @@ struct __sched_param
@@ -54,7 +54,7 @@ struct __sched_param
#if defined _SCHED_H && !defined __cpu_set_t_defined
# define __cpu_set_t_defined
/* Size definition for CPU sets. */
-# define __CPU_SETSIZE 1024
+# define __CPU_SETSIZE 4096
# define __NCPUBITS (8 * sizeof (__cpu_mask))
/* Type for array elements in 'cpu_set_t'. */
Index: sysdeps/unix/sysv/linux/bits/sched.h
===================================================================
--- sysdeps/unix/sysv/linux/bits/sched.h.orig
+++ sysdeps/unix/sysv/linux/bits/sched.h
@@ -113,7 +113,7 @@ struct __sched_param
#if defined _SCHED_H && !defined __cpu_set_t_defined
# define __cpu_set_t_defined
/* Size definition for CPU sets. */

View File

@ -1,45 +0,0 @@
Index: glibc-2.13/sysdeps/x86_64/multiarch/Makefile
===================================================================
--- glibc-2.13.orig/sysdeps/x86_64/multiarch/Makefile
+++ glibc-2.13/sysdeps/x86_64/multiarch/Makefile
@@ -6,7 +6,7 @@ endif
ifeq ($(subdir),string)
sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \
strend-sse4 memcmp-sse4 memcpy-ssse3 mempcpy-ssse3 \
- memmove-ssse3 memcpy-ssse3-back mempcpy-ssse3-back \
+ memmove-ssse3 mempcpy-ssse3-back \
memmove-ssse3-back strcasestr-nonascii strcasecmp_l-ssse3 \
strncase_l-ssse3 strlen-sse4 strlen-no-bsf \
memset-x86-64
Index: glibc-2.13/sysdeps/x86_64/multiarch/memcpy.S
===================================================================
--- glibc-2.13.orig/sysdeps/x86_64/multiarch/memcpy.S
+++ glibc-2.13/sysdeps/x86_64/multiarch/memcpy.S
@@ -35,9 +35,11 @@ ENTRY(memcpy)
testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
jz 2f
leaq __memcpy_ssse3(%rip), %rax
+ /* disable backward memcpy for glibc 2.13
testl $bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
jz 2f
leaq __memcpy_ssse3_back(%rip), %rax
+ */
2: ret
END(memcpy)
Index: glibc-2.13/sysdeps/x86_64/multiarch/memcpy_chk.S
===================================================================
--- glibc-2.13.orig/sysdeps/x86_64/multiarch/memcpy_chk.S
+++ glibc-2.13/sysdeps/x86_64/multiarch/memcpy_chk.S
@@ -36,9 +36,11 @@ ENTRY(__memcpy_chk)
testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
jz 2f
leaq __memcpy_chk_ssse3(%rip), %rax
+ /* disable backwards memcpy until glibc 2.14
testl $bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
jz 2f
leaq __memcpy_chk_ssse3_back(%rip), %rax
+ */
2: ret
END(__memcpy_chk)
# else

View File

@ -0,0 +1,19 @@
Index: glibc-2.11.3/elf/dl-close.c
===================================================================
--- glibc-2.11.3.orig/elf/dl-close.c 2011-05-27 15:08:23.000000000 +0200
+++ glibc-2.11.3/elf/dl-close.c 2011-07-13 19:28:52.000000000 +0200
@@ -127,7 +127,13 @@ _dl_close_worker (struct link_map *map)
{
struct link_map **oldp = map->l_initfini;
map->l_initfini = map->l_orig_initfini;
- _dl_scope_free (oldp);
+ /* We can't remove the l_initfini memory because
+ it's shared with l_searchlist.r_list. We don't clear
+ the latter so when we dlopen this object again that
+ entry would point to stale memory. And we don't want
+ to recompute it as it would involve a new call to
+ map_object_deps.
+ _dl_scope_free (oldp); */
}
}

View File

@ -1,92 +0,0 @@
When fnmatch detects an invalid multibyte character it should fall back to
single byte matching, so that "*" has a chance to match such a string.
Andreas.
Ported to glibc-2.11.3 by Petr Baudis.
2005-04-12 Andreas Schwab <schwab@suse.de>
* posix/fnmatch.c (fnmatch): If conversion to wide character
fails fall back to single byte matching.
Index: glibc-2.11.2/posix/fnmatch.c
===================================================================
--- glibc-2.11.2.orig/posix/fnmatch.c
+++ glibc-2.11.2/posix/fnmatch.c
@@ -333,6 +333,7 @@ fnmatch (pattern, string, flags)
# if HANDLE_MULTIBYTE
if (__builtin_expect (MB_CUR_MAX, 1) != 1)
{
+ const char *orig_pattern = pattern;
mbstate_t ps;
size_t n;
const char *p;
@@ -356,10 +357,8 @@ fnmatch (pattern, string, flags)
alloca_used);
n = mbsrtowcs (wpattern, &p, n + 1, &ps);
if (__builtin_expect (n == (size_t) -1, 0))
- /* Something wrong.
- XXX Do we have to set `errno' to something which mbsrtows hasn't
- already done? */
- return -1;
+ /* Something wrong. Fall back to single byte matching. */
+ goto try_singlebyte;
if (p)
{
memset (&ps, '\0', sizeof (ps));
@@ -371,10 +370,8 @@ fnmatch (pattern, string, flags)
prepare_wpattern:
n = mbsrtowcs (NULL, &pattern, 0, &ps);
if (__builtin_expect (n == (size_t) -1, 0))
- /* Something wrong.
- XXX Do we have to set `errno' to something which mbsrtows hasn't
- already done? */
- return -1;
+ /* Something wrong. Fall back to single byte matching. */
+ goto try_singlebyte;
wpattern_malloc = wpattern
= (wchar_t *) malloc ((n + 1) * sizeof (wchar_t));
assert (mbsinit (&ps));
@@ -396,14 +393,8 @@ fnmatch (pattern, string, flags)
alloca_used);
n = mbsrtowcs (wstring, &p, n + 1, &ps);
if (__builtin_expect (n == (size_t) -1, 0))
- {
- /* Something wrong.
- XXX Do we have to set `errno' to something which
- mbsrtows hasn't already done? */
- free_return:
- free (wpattern_malloc);
- return -1;
- }
+ /* Something wrong. Fall back to single byte matching. */
+ goto free_and_try_singlebyte;
if (p)
{
memset (&ps, '\0', sizeof (ps));
@@ -415,10 +406,8 @@ fnmatch (pattern, string, flags)
prepare_wstring:
n = mbsrtowcs (NULL, &string, 0, &ps);
if (__builtin_expect (n == (size_t) -1, 0))
- /* Something wrong.
- XXX Do we have to set `errno' to something which mbsrtows hasn't
- already done? */
- goto free_return;
+ /* Something wrong. Fall back to single byte matching. */
+ goto free_and_try_singlebyte;
wstring_malloc = wstring
= (wchar_t *) malloc ((n + 1) * sizeof (wchar_t));
@@ -439,6 +428,11 @@ fnmatch (pattern, string, flags)
free (wpattern_malloc);
return res;
+
+ free_and_try_singlebyte:
+ free(wpattern_malloc);
+ try_singlebyte:
+ pattern = orig_pattern;
}
# endif /* mbstate_t and mbsrtowcs or _LIBC. */

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b11c4501ae929883447f409c31d65e82822b1c5693075a825a3d54612876ee5a
size 625945

3
glibc-ports-2.14.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:808f0f6938af4d17fe6c091597df02d85ca5b4a3da21daf5065cba9a32ec7d02
size 627448

View File

@ -0,0 +1,212 @@
This reverts the following patch from upstream PR 12724,
which can cause surprising changes in fclose behaviour when multiple
file handles refer to the same file (fclose on one changes file position
on the other).
See bnc #711829.
git diff -R 'fcabc0f8b185f9e0a9289720be5ede6c39b3bf21^!'
2011-05-13 Ulrich Drepper <drepper@gmail.com>
[BZ #12724]
* libio/fileops.c (_IO_new_file_close_it): Always flush when
currently writing and seek to current position when not.
* libio/Makefile (tests): Add bug-fclose1.
* libio/bug-fclose1.c: New file.
2011-05-12 Ulrich Drepper <drepper@gmail.com>
[BZ #12511]
diff --git b/libio/Makefile a/libio/Makefile
index ec30904..83b9458 100644
--- b/libio/Makefile
+++ a/libio/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1995-2004,2006-2009,2011 Free Software Foundation, Inc.
+# Copyright (C) 1995-2004,2006,2007,2008,2009 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
@@ -58,7 +58,7 @@ tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf tst_getwc tst_putwc \
tst-memstream1 tst-memstream2 \
tst-wmemstream1 tst-wmemstream2 \
bug-memstream1 bug-wmemstream1 \
- tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos bug-fclose1
+ tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos
test-srcs = test-freopen
all: # Make this the default target; it will be defined in Rules.
diff --git b/libio/bug-fclose1.c a/libio/bug-fclose1.c
deleted file mode 100644
index f1e09f5..0000000
--- b/libio/bug-fclose1.c
+++ /dev/null
@@ -1,132 +0,0 @@
-// BZ #12724
-
-static void do_prepare (void);
-#define PREPARE(argc, argv) do_prepare ()
-static int do_test (void);
-#define TEST_FUNCTION do_test()
-#include "../test-skeleton.c"
-
-
-static int fd;
-
-
-static void
-do_prepare (void)
-{
- fd = create_temp_file ("bug-fclose1.", NULL);
- if (fd == -1)
- {
- printf ("cannot create temporary file: %m\n");
- exit (1);
- }
-}
-
-
-static int
-do_test (void)
-{
- static const char pattern[] = "hello world";
-
- /* Prepare a seekable file. */
- if (write (fd, pattern, sizeof pattern) != sizeof pattern)
- {
- printf ("cannot write pattern: %m\n");
- return 1;
- }
- if (lseek (fd, 1, SEEK_SET) != 1)
- {
- printf ("cannot seek after write: %m\n");
- return 1;
- }
-
- /* Create an output stream visiting the file; when it is closed, all
- other file descriptors visiting the file must see the new file
- position. */
- int fd2 = dup (fd);
- if (fd2 < 0)
- {
- printf ("cannot duplicate descriptor for writing: %m\n");
- return 1;
- }
- FILE *f = fdopen (fd2, "w");
- if (f == NULL)
- {
- printf ("first fdopen failed: %m\n");
- return 1;
- }
- if (fputc (pattern[1], f) != pattern[1])
- {
- printf ("fputc failed: %m\n");
- return 1;
- }
- if (fclose (f) != 0)
- {
- printf ("first fclose failed: %m\n");
- return 1;
- }
- errno = 0;
- if (lseek (fd2, 0, SEEK_CUR) != -1)
- {
- printf ("lseek after fclose after write did not fail\n");
- return 1;
- }
- if (errno != EBADF)
- {
- printf ("lseek after fclose after write did not fail with EBADF: %m\n");
- return 1;
- }
- off_t o = lseek (fd, 0, SEEK_CUR);
- if (o != 2)
- {
- printf ("\
-lseek on original descriptor after first fclose returned %ld, expected 2\n",
- (long int) o);
- return 1;
- }
-
- /* Likewise for an input stream. */
- fd2 = dup (fd);
- if (fd2 < 0)
- {
- printf ("cannot duplicate descriptor for reading: %m\n");
- return 1;
- }
- f = fdopen (fd2, "r");
- if (f == NULL)
- {
- printf ("second fdopen failed: %m\n");
- return 1;
- }
- char c = fgetc (f);
- if (c != pattern[2])
- {
- printf ("getc returned %c, expected %c\n", c, pattern[2]);
- return 1;
- }
- if (fclose (f) != 0)
- {
- printf ("second fclose failed: %m\n");
- return 1;
- }
- errno = 0;
- if (lseek (fd2, 0, SEEK_CUR) != -1)
- {
- printf ("lseek after fclose after read did not fail\n");
- return 1;
- }
- if (errno != EBADF)
- {
- printf ("lseek after fclose after read did not fail with EBADF: %m\n");
- return 1;
- }
- o = lseek (fd, 0, SEEK_CUR);
- if (o != 3)
- {
- printf ("\
-lseek on original descriptor after second fclose returned %ld, expected 3\n",
- (long int) o);
- return 1;
- }
-
- return 0;
-}
Index: glibc-2.14/libio/fileops.c
===================================================================
--- glibc-2.14.orig/libio/fileops.c
+++ glibc-2.14/libio/fileops.c
@@ -160,28 +160,20 @@ int
_IO_new_file_close_it (fp)
_IO_FILE *fp;
{
+ int write_status;
if (!_IO_file_is_open (fp))
return EOF;
- int write_status;
- if (_IO_in_put_mode (fp))
+ if ((fp->_flags & _IO_NO_WRITES) == 0
+ && (fp->_flags & _IO_CURRENTLY_PUTTING) != 0)
write_status = _IO_do_flush (fp);
- else if (fp->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL
- && !_IO_in_backup (fp))
- {
- off64_t o = _IO_SEEKOFF (fp, 0, _IO_seek_cur, 0);
- if (o == WEOF)
- write_status = EOF;
- else
- write_status = _IO_SYSSEEK (fp, o, SEEK_SET) < 0 ? EOF : 0;
- }
else
write_status = 0;
INTUSE(_IO_unsave_markers) (fp);
int close_status = ((fp->_flags2 & _IO_FLAGS2_NOCLOSE) == 0
? _IO_SYSCLOSE (fp) : 0);
/* Free buffer. */
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T

View File

@ -1,61 +0,0 @@
2011-02-06 Mike Frysinger <vapier@gentoo.org>
[BZ #12653]
* sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S: Only protect
MEMCPY_CHK with USE_AS_BCOPY ifdef check.
* sysdeps/i386/i686/multiarch/memcpy-ssse3.S: Likewise.
* sysdeps/x86_64/multiarch/memcpy-ssse3.S: Likewise.
* sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: Likewise.
Index: glibc-2.13/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
===================================================================
--- glibc-2.13.orig/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
+++ glibc-2.13/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
@@ -110,7 +110,7 @@ __i686.get_pc_thunk.bx:
#endif
.section .text.ssse3,"ax",@progbits
-#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BCOPY
+#if !defined USE_AS_BCOPY
ENTRY (MEMCPY_CHK)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
Index: glibc-2.13/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
===================================================================
--- glibc-2.13.orig/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
+++ glibc-2.13/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
@@ -110,7 +110,7 @@ __i686.get_pc_thunk.bx:
#endif
.section .text.ssse3,"ax",@progbits
-#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BCOPY
+#if !defined USE_AS_BCOPY
ENTRY (MEMCPY_CHK)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
Index: glibc-2.13/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
===================================================================
--- glibc-2.13.orig/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
+++ glibc-2.13/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
@@ -49,7 +49,7 @@
ud2
.section .text.ssse3,"ax",@progbits
-#if defined SHARED && !defined NOT_IN_libc
+#if !defined USE_AS_BCOPY
ENTRY (MEMCPY_CHK)
cmpq %rdx, %rcx
jb HIDDEN_JUMPTARGET (__chk_fail)
Index: glibc-2.13/sysdeps/x86_64/multiarch/memcpy-ssse3.S
===================================================================
--- glibc-2.13.orig/sysdeps/x86_64/multiarch/memcpy-ssse3.S
+++ glibc-2.13/sysdeps/x86_64/multiarch/memcpy-ssse3.S
@@ -49,7 +49,7 @@
ud2
.section .text.ssse3,"ax",@progbits
-#if defined SHARED && !defined NOT_IN_libc
+#if !defined USE_AS_BCOPY
ENTRY (MEMCPY_CHK)
cmpq %rdx, %rcx
jb HIDDEN_JUMPTARGET (__chk_fail)

View File

@ -62,9 +62,9 @@ Index: resolv/Makefile
+cflags += -Wno-strict-prototypes -Wno-write-strings
Index: sunrpc/Makefile
===================================================================
--- sunrpc/Makefile.orig 2011-05-25 20:00:57.381005790 +0200
+++ sunrpc/Makefile 2011-06-15 14:57:37.657361569 +0200
@@ -129,6 +129,10 @@
--- sunrpc/Makefile.orig
+++ sunrpc/Makefile
@@ -152,6 +152,10 @@ CFLAGS-openchild.c = -fexceptions
CPPFLAGS += -D_RPC_THREAD_SAFE_
@ -72,10 +72,9 @@ Index: sunrpc/Makefile
+CFLAGS-clnt_udp.c = -fno-strict-aliasing
+CFLAGS-clnt_unix.c = -fno-strict-aliasing
+
include ../Rules
$(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs)) \
$(objpfx)tst-getmyaddr: $(common-objpfx)linkobj/libc.so
$(objpfx)tst-xdrmem: $(common-objpfx)linkobj/libc.so
$(objpfx)tst-xdrmem2: $(common-objpfx)linkobj/libc.so
Index: sysdeps/powerpc/powerpc64/elf/Makefile
===================================================================
--- sysdeps/powerpc/powerpc64/elf/Makefile.orig

View File

@ -1,20 +0,0 @@
2011-01-27 Petr Baudis <pasky@suse.cz>
* stdio-common/vfprintf.c (vfprintf): Pass correct newlen
to extend_alloca().
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
index fc370e8..ecf5dfa 100644
--- a/stdio-common/vfprintf.c
+++ b/stdio-common/vfprintf.c
@@ -1682,7 +1682,9 @@ do_positional:
{
/* Extend the array of format specifiers. */
struct printf_spec *old = specs;
- specs = extend_alloca (specs, nspecs_max, 2 * nspecs_max);
+ specs = extend_alloca (specs, nspecs_max,
+ 2 * nspecs_max
+ * sizeof (struct printf_spec));
/* Copy the old array's elements to the new space. */
memmove (specs, old, nspecs * sizeof (struct printf_spec));

View File

@ -1,41 +0,0 @@
Index: glibc/stdlib/longlong.h
===================================================================
--- glibc.orig/stdlib/longlong.h
+++ glibc/stdlib/longlong.h
@@ -303,6 +303,7 @@ UDItype __umulsidi3 (USItype, USItype);
#endif
#if (defined (__i370__) || defined (__s390__) || defined (__mvs__)) && W_TYPE_SIZE == 32
+#if !defined (__zarch__)
#define smul_ppmm(xh, xl, m0, m1) \
do { \
union {DItype __ll; \
@@ -324,6 +325,28 @@ UDItype __umulsidi3 (USItype, USItype);
: "0" (__x.__ll), "r" (d)); \
(q) = __x.__i.__l; (r) = __x.__i.__h; \
} while (0)
+#else
+#define smul_ppmm(xh, xl, m0, m1) \
+ do { \
+ register SItype r0 __asm__ ("0"); \
+ register SItype r1 __asm__ ("1") = m0; \
+ \
+ __asm__ ("mr\t%%r0,%3" \
+ : "=r" (r0), "=r" (r1) \
+ : "r" (r1), "r" (m1)); \
+ (xh) = r1; (xl) = r0; \
+ } while (0)
+#define sdiv_qrnnd(q, r, n1, n0, d) \
+ do { \
+ register SItype r0 __asm__ ("0") = n0; \
+ register SItype r1 __asm__ ("1") = n1; \
+ \
+ __asm__ ("dr\t%%r0,%3" \
+ : "=r" (r0), "=r" (r1) \
+ : "r" (r0), "r" (r1), "r" (d)); \
+ (q) = r0; (r) = r1; \
+ } while (0)
+#endif /* __zarch__ */
#endif
#if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32

View File

@ -1,8 +1,45 @@
-------------------------------------------------------------------
Thu Aug 18 11:55:08 UTC 2011 - aj@suse.de
- Mark glibc-info, glibc-html and glibc-i18ndata as noarch packages.
-------------------------------------------------------------------
Wed Aug 17 18:57:00 UTC 2011 - matz@suse.de
- Fix crash (access-after-free) in dl_lookup_x. [bnc#703140]
-------------------------------------------------------------------
Wed Aug 17 18:56:03 UTC 2011 - aj@suse.de
- Enhance rpmlintrc to ignore shlib policy violation.
- Remove obsolete patches glibc-fnmatch-multibyte.diff,
glibc-2.3.1.localedef.diff, glibc-2.10-nscd-nostack.diff.
-------------------------------------------------------------------
Wed Aug 17 14:47:11 UTC 2011 - aj@suse.de
- Update to current 2.14 branch: Various bugfixes.
Remove upstreamed patches missing-include-build-fix.diff,
glibc-2.14-res_send.patch, glibc-dl-fxstatat64.patch)
-------------------------------------------------------------------
Wed Aug 17 14:09:50 UTC 2011 - aj@suse.de
- Revert removal of sunrpc code (patch glibc2.14-revert-sunrpc-removal.patch).
-------------------------------------------------------------------
Fri Aug 12 14:55:12 CEST 2011 - matz@suse.de
- Revert seeking on fclose, incomplete implementation of POSIX
behaviour can confuse current users. [bnc #711829]
(patch glibc-revert-fseek-on-fclose.diff)
-------------------------------------------------------------------
Thu Jul 21 12:37:09 UTC 2011 - rhafer@suse.de
- Disable rewriting ::1 to 127.0.0.1 for /etc/hosts entries.
(bnc#684534, bnc#706719)
(patch glibc-fix-double-loopback.diff)
-------------------------------------------------------------------
Wed Jul 20 15:04:33 UTC 2011 - lnussel@suse.de
@ -22,6 +59,22 @@ Tue Jul 19 08:41:55 UTC 2011 - lnussel@suse.de
previous versions if the password contains 8bit chracters!
* libcrypt now exports crypt_gensalt
-------------------------------------------------------------------
Fri Jul 15 07:54:46 UTC 2011 - aj@suse.de
- Update to glibc 2.14:
* The RPC implementation in libc is obsoleted. Old programs keep working
but new programs cannot be linked with the routines in libc anymore.
Programs in need of RPC functionality must be linked against TI-RPC.
The TI-RPC implementation is IPv6 enabled and there are other benefits.
* Various bugfixes, new locales, new linux kernel interfaces.
* New program sotruss to traces calls through PLTs
* Removed the following obsoleted patches: glibc-2.6-configure.diff,
glibc-disable-backward-memcpy.diff, glibc-static-memcpy.diff,
glibc-zarch-longlong.diff, glibc-bso-12454.diff,
glibc-vfprintf-positional.diff
- Build without -fno-strict-aliasing.
-------------------------------------------------------------------
Tue Jul 12 14:21:29 UTC 2011 - aj@suse.de

View File

@ -12,3 +12,5 @@ addFilter(".*shared-lib-without-dependency-information /lib.*/ld-2.*.so")
addFilter(".*permissions-missing-postin missing %set_permissions /usr/.*pt_chown in %post")
# Do not require permissions, this will lead to a cycle (bnc#700925):
addFilter("glibc\..*: permissions-missing-requires")
# We will not rename glibc to follow the shlib policy
addFilter("shlib-policy-missing-suffix")

View File

@ -77,11 +77,13 @@ Obsoletes: glibc-64bit
%ifarch ppc
Obsoletes: glibc-32bit
%endif
Version: 2.13
Release: 29
AutoReqProv: on
Version: 2.14
Release: 1
Url: http://www.gnu.org/software/libc/libc.html
Source: glibc-%{version}-996cf2ef0727.tar.bz2
Source2: http://ftp.gnu.org/gnu/glibc/glibc-ports-2.13.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: glibc-%{version}-4eddf93f5cc2.tar.bz2
Source2: http://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.bz2
Source3: noversion.tar.bz2
Source4: manpages.tar.bz2
Source5: usr.sbin.nscd
@ -110,10 +112,8 @@ NoSource: 0
#
# PATCH-FIX-OPENSUSE remove lfs test from testsuite aj@suse.de
Patch0: glibc-testsuite.patch
# PATCH-FIX-OPENSUSE handle glibc binaries
# PATCH-FIX-OPENSUSE handle glibc binaries
Patch1: glibc-2.3.90-noversion.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch2: glibc-fnmatch-multibyte.diff
# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change
Patch3: glibc-resolv-reload.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
@ -125,8 +125,6 @@ Patch7: glibc-version.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch8: glibc-2.4.90-revert-only-euro.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch11: glibc-2.3.1.localedef.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch12: glibc-2.3.2.no_archive.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch13: libm-x86-64.diff.bz2
@ -148,8 +146,6 @@ Patch23: glibc-2.3.3-nscd-db-path.diff
Patch24: glibc-2.3.5-nscd-zeronegtimeout.diff
# PATCH-FIX-OPENSUSE prefer -lang rpm packages
Patch25: glibc-2.3.90-langpackdir.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch27: glibc-2.6-configure.diff
# PATCH-FIX-OPENSUSE Fix hangs in UDP RPC calls bso#5379 bnc#257745 aj@suse.de
Patch28: glibc-2.2-sunrpc.diff
# PATCH-FIX-OPENSUSE Do not generate hardlink for getconf
@ -160,16 +156,12 @@ Patch30: getaddrinfo-ipv6-sanity.diff
Patch33: glibc-compiled-binaries.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch36: glibc-no-unwind-tables.diff
# PATCH-FIX-OPENSUSE bnc#387202
Patch37: glibc-2.10-nscd-nostack.diff
# PATCH-FEATURE-SLE increase cpusetsize to 4096, needs to be kept for compatibility kukuk@suse.de
Patch38: glibc-cpusetsize.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch40: libm-x86-64-exceptions.diff
# PATCH-FIX-OPENSUSE - Allow compilation with -altivec aj@suse.de
Patch41: glibc-uio-cell.diff
# PATCH-FIX-UPSTREAM -- add missing includes aj@suse.de
Patch43: missing-include-build-fix.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch45: glibc-gai-private4.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
@ -182,22 +174,10 @@ Patch48: glibc-malloc-arena-max.diff
Patch49: glibc-fini-unwind.diff
# PATCH-FIX-UPSTREAM install gconv-modules aj@suse.de
Patch50: glibc-gconvcache-s390.diff
# PATCH-FIX-UPSTREAM - Fix alloca argument bso#12445 aj@suse.de
Patch51: glibc-vfprintf-positional.diff
# PATCH-FIX-OPENSUSE bnc#657627
Patch52: glibc-elf-localscope.diff
# PATCH-FIX-UPSTREAM Fix longlong.h for zArch
Patch53: glibc-zarch-longlong.diff
# PATCH-FEATURE-OPENSUSE disable backward memcpy aj@suse.de
Patch54: glibc-disable-backward-memcpy.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch55: glibc-bso-12454.diff
# PATCH-FIX-UPSTREAM fix static memcpy
Patch56: glibc-static-memcpy.diff
# FIX-OPENSUSE compile some files with -fno-strict-aliasing
Patch58: glibc-strict-aliasing.diff
# PATCH-FIX-UPSTREAM fix preloading of shared libs aj@suse.de
Patch59: glibc-2.13-dl-load.patch
# PATCH-FIX-UPSTREAM fix x86 <bits/sigcontext.h> aj@suse.de
Patch60: glibc-x86-bits-sigcontext.patch
# PATCH-FEATURE-UPSTREAM Speedup getsysstats call aj@suse.de
@ -210,7 +190,12 @@ Patch63: glibc-2.13-localedef.patch
Patch64: glibc-fix-rwlock-stack-imbalance.patch
# PATCH-FIX-OPENSUSE disable rewriting ::1 to 127.0.0.1 for /etc/hosts bnc#684534, bnc#706719
Patch65: glibc-fix-double-loopback.diff
#
# PATCH-FEATURE-OPENSUSE Revert sunrpc removal aj@suse.de
Patch66: glibc2.14-revert-sunrpc-removal.patch
# PATCH-FIX-OPENSUSE revert seeking on fclose for now bnc#711829 matz@suse.de
Patch67: glibc-revert-fseek-on-fclose.diff
# PATCH-FIX-OPENSUSE Fix crash (access-after-free) in dl_lookup_x bnc#703140 matz@suse.de
Patch68: glibc-fix-lookup-crash.patch
# PATCH-FEATURE-OPENSUSE -- add sha support to crypt_blowfish lnussel@suse.de
Patch80: crypt_blowfish-1.1-sha.diff
@ -226,6 +211,7 @@ Summary: Info Files for the GNU C Library
Group: Documentation/Other
Requires(post): %{install_info_prereq}
Requires(postun): %{install_info_prereq}
BuildArch: noarch
%description info
This package contains the documentation for the GNU C library stored as
@ -236,6 +222,7 @@ complete and is partially out of date.
License: GPLv2+ ; LGPLv2.1+
Summary: HTML Documentation for the GNU C Library
Group: Documentation/HTML
BuildArch: noarch
%description html
This package contains the HTML documentation for the GNU C library. Due
@ -246,6 +233,7 @@ partially out of date.
License: LGPLv2.1+
Summary: Database Sources for 'locale'
Group: System/Libraries
BuildArch: noarch
%description i18ndata
This package contains the data needed to build the locale data files to
@ -387,15 +375,11 @@ mv crypt_blowfish-%crypt_bf_version/*.[chS] crypt/
%patch0
# libNoVersion part is only active on ix86
%patch1
# Disabled
# %patch2 -p1
%patch3
%patch4
%patch5 -p1
%patch7
%patch8
# Disabled
#%patch11
%patch12
%patch13 -E
# We have s_sincos.c in patch13, remove duplicate
@ -404,7 +388,8 @@ rm sysdeps/x86_64/fpu/s_sincos.S
%patch16
%patch18
%patch20
%patch21
# XXX Did not patch for 2.14:
#%patch21
# avoid changing nscd_stat.c mtime to avoid code generation
# differences on each rebuild
touch -r nscd/nscd_stat.c nscd/s-stamp
@ -414,18 +399,14 @@ touch -r nscd/nscd_stat.c nscd/s-stamp
touch -r nscd/s-stamp nscd/nscd_stat.c
rm nscd/s-stamp
%patch25
%patch27
%patch28
%patch29
%patch30
%patch33
%patch36
# Disable for now
#%patch37
%patch38
%patch40
%patch41 -p1
%patch43 -p1
%patch45
%patch46 -p1
%patch47 -p1
@ -434,20 +415,17 @@ rm nscd/s-stamp
%endif
%patch49
%patch50
%patch51 -p1
%patch52
%patch53 -p1
%patch54 -p1
%patch55 -p1
%patch56 -p1
%patch58
%patch59 -p1
%patch60 -p1
%patch61 -p1
%patch62 -p1
%patch63 -p1
%patch64 -p1
%patch65 -p1
%patch66 -p1
%patch67 -p1
%patch68 -p1
#
# Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed!
@ -917,7 +895,6 @@ exit 0
%doc %{_mandir}/man1/getent.1.gz
%doc %{_mandir}/man1/localedef.1.gz
%doc %{_mandir}/man5/*
%doc %{_mandir}/man8/rpcinfo.8.gz
/%{_lib}/ld-%{version}.so
%ifarch ppc s390 mips hppa
/%{_lib}/ld.so.1
@ -1025,11 +1002,11 @@ exit 0
%dir %attr(0755,root,root) %{_libdir}/getconf
%{_libdir}/getconf/*
%{_sbindir}/glibc_post_upgrade
%{_sbindir}/rpcinfo
%{_sbindir}/iconvconfig
%ifarch %ix86
%files obsolete
%defattr (755,root,root,755)
%dir /%{_lib}/obsolete/
@ -1138,11 +1115,14 @@ exit 0
%defattr(-,root,root)
/%{_lib}/libmemusage.so
/%{_lib}/libpcprofile.so
%dir /%{_libdir}/audit
/%{_libdir}/audit/sotruss-lib.so
# These need gd-devel for building
# %%{_bindir}/memusage
# %%{_bindir}/memusagestat
%{_bindir}/mtrace
%{_bindir}/pcprofiledump
%{_bindir}/sotruss
%{_bindir}/xtrace
%changelog

View File

@ -0,0 +1,63 @@
Index: glibc-2.14/nis/Makefile
===================================================================
--- glibc-2.14.orig/nis/Makefile
+++ glibc-2.14/nis/Makefile
@@ -23,9 +23,9 @@ subdir := nis
aux := nis_hash
+headers := $(wildcard rpcsvc/*.[hx])
distribute := nss-nis.h nss-nisplus.h nis_intern.h Banner \
- nisplus-parser.h nis_xdr.h nss \
- $(wildcard rpcsvc/*.[hx])
+ nisplus-parser.h nis_xdr.h nss
# These are the databases available for the nis (and perhaps later nisplus)
# service. This must be a superset of the services in nss.
Index: glibc-2.14/NEWS
===================================================================
--- glibc-2.14.orig/NEWS
+++ glibc-2.14/NEWS
@@ -20,16 +20,6 @@ Version 2.14
12724, 12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792,
12795, 12811, 12813, 12814, 12841
-* The RPC implementation in libc is obsoleted. Old programs keep working
- but new programs cannot be linked with the routines in libc anymore.
- Programs in need of RPC functionality must be linked against TI-RPC.
- The TI-RPC implementation is IPv6 enabled and there are other benefits.
-
- Visible changes of this change include (obviously) the inability to link
- programs using RPC functions without referencing the TI-RPC library and the
- removal of the RPC headers from the glibc headers.
- Implemented by Ulrich Drepper.
-
* New Linux interfaces: clock_adjtime, name_to_handle_at, open_by_handle_at,
syncfs, setns, sendmmsg
Index: glibc-2.14/include/libc-symbols.h
===================================================================
--- glibc-2.14.orig/include/libc-symbols.h
+++ glibc-2.14/include/libc-symbols.h
@@ -635,7 +635,7 @@ for linking")
# define libc_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
# define libc_hidden_def(name) hidden_def (name)
# define libc_hidden_weak(name) hidden_weak (name)
-# define libc_hidden_nolink(name, version) hidden_nolink (name, libc, version)
+# define libc_hidden_nolink(name, version) hidden_def (name)
# define libc_hidden_ver(local, name) hidden_ver (local, name)
# define libc_hidden_data_def(name) hidden_data_def (name)
# define libc_hidden_data_weak(name) hidden_data_weak (name)
Index: glibc-2.14/sunrpc/Makefile
===================================================================
--- glibc-2.14.orig/sunrpc/Makefile
+++ glibc-2.14/sunrpc/Makefile
@@ -53,7 +53,7 @@ headers-in-tirpc = $(addprefix rpc/,auth
des_crypt.h)
headers-not-in-tirpc = $(addprefix rpc/,key_prot.h rpc_des.h) \
$(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h
-headers = rpc/netdb.h
+headers = rpc/netdb.h $(headers-in-tirpc) $(headers-not-in-tirpc)
install-others = $(inst_sysconfdir)/rpc
generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \
$(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e84aeb3808f86c7cd169ca795b31d1fdef21864c74b827ca750f3d478f0a95a5
size 12562
oid sha256:33df2d6951abd1d111570be780e3e6b265183d51b2f0a34699c6e39380b8ea4c
size 11611

View File

@ -1,31 +0,0 @@
2011-06-14 Andreas Jaeger <aj@suse.de>
* pthread_rwlock_init.c: Include <string.h> for
memset declaration.
2011-06-14 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/check_native.c: Include <string.h> for
memset declaration.
--- a/sysdeps/unix/sysv/linux/check_native.c
+++ b/sysdeps/unix/sysv/linux/check_native.c
@@ -23,6 +23,7 @@
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <time.h>
#include <unistd.h>
#include <net/if.h>
--- a/nptl/pthread_rwlock_init.c
+++ b/nptl/pthread_rwlock_init.c
@@ -18,6 +18,7 @@
02111-1307 USA. */
#include "pthreadP.h"
+#include <string.h>
#include <kernel-features.h>