rebuilt with enable-obsolete-rpc required by pwdutils [release 2.19-2mamba;Sun Apr 20 2014]

This commit is contained in:
Silvan Calarco 2024-01-05 23:07:54 +01:00
parent 1708819a92
commit 6bf54b868f
22 changed files with 2128 additions and 0 deletions

View File

@ -1,2 +1,8 @@
# glibc
The glibc package contains standard libraries which are used by multiple programs on the system.
In order to save disk space and memory, as well as to make upgrading easier, common system code is kept in one place and shared between programs.
This particular package contains the most important sets of shared libraries: the standard C library and the standard math library. Without these two libraries, a Linux system will not function.
The glibc package also contains national language (locale) support.

View File

@ -0,0 +1,37 @@
diff -Nru glibc-2.10.1.orig/configure glibc-2.10.1/configure
--- glibc-2.10.1.orig/configure 2009-05-17 14:19:31.000000000 +0200
+++ glibc-2.10.1/configure 2009-11-03 19:44:54.000000000 +0100
@@ -4839,7 +4839,7 @@
ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[3-9]*)
+ 2.2[0-9]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
@@ -4902,7 +4902,7 @@
ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[3-9]*)
+ 2.2[0-9]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
diff -Nru glibc-2.10.1.orig/configure.in glibc-2.10.1/configure.in
--- glibc-2.10.1.orig/configure.in 2009-04-04 01:51:47.000000000 +0200
+++ glibc-2.10.1/configure.in 2009-11-03 19:44:33.000000000 +0100
@@ -897,10 +897,10 @@
# Accept binutils 2.13 or newer.
AC_CHECK_PROG_VER(AS, $AS, --version,
[GNU assembler.* \([0-9]*\.[0-9.]*\)],
- [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
+ [2.2[0-9]*], AS=: critic_missing="$critic_missing as")
AC_CHECK_PROG_VER(LD, $LD, --version,
[GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
- [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
+ [2.2[0-9]*], LD=: critic_missing="$critic_missing ld")
# We need the physical current working directory. We cannot use the
# "pwd -P" shell builtin since that's not portable. Instead we try to

View File

@ -0,0 +1,31 @@
diff -Naur glibc-2.11.1-orig/nptl/sysdeps/pthread/pt-initfini.c
glibc-2.11.1/nptl/sysdeps/pthread/pt-initfini.c
--- glibc-2.11.1-orig/nptl/sysdeps/pthread/pt-initfini.c 2009-12-08 20:10:20.000000000 +0000
+++ glibc-2.11.1/nptl/sysdeps/pthread/pt-initfini.c 2010-04-17 02:24:02.000000000 +0100
@@ -45,6 +45,11 @@
/* Embed an #include to pull in the alignment and .end directives. */
asm ("\n#include \"defs.h\"");
+asm ("\n#if defined __i686 && defined __ASSEMBLER__");
+asm ("\n#undef __i686");
+asm ("\n#define __i686 __i686");
+asm ("\n#endif");
+
/* The initial common code ends here. */
asm ("\n/*...@header_ends*/");
diff -Naur glibc-2.11.1-orig/sysdeps/unix/sysv/linux/i386/sysdep.h
glibc-2.11.1/sysdeps/unix/sysv/linux/i386/sysdep.h
--- glibc-2.11.1-orig/sysdeps/unix/sysv/linux/i386/sysdep.h 2009-12-08 20:10:20.000000000 +0000
+++ glibc-2.11.1/sysdeps/unix/sysv/linux/i386/sysdep.h 2010-04-17 02:24:02.000000000 +0100
@@ -29,6 +29,10 @@
#include <dl-sysdep.h>
#include <tls.h>
+#if defined __i686 && defined __ASSEMBLER__
+#undef __i686
+#define __i686 __i686
+#endif
/* For Linux we can use the system call table in the header file
/usr/include/asm/unistd.h

View File

@ -0,0 +1,39 @@
From 25b3aadaf646bff18d6527e03717c87bf50b3a50 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@redhat.com>
Date: Tue, 28 Sep 2010 15:11:48 +0200
Subject: [PATCH] Don't try to write to _rtld_global_ro after performing relro protection
---
ChangeLog | 5 +++++
elf/rtld.c | 8 ++++----
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/elf/rtld.c b/elf/rtld.c
index 9a560b3..201c9cf 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -2168,6 +2168,10 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
we need it in the memory handling later. */
GLRO(dl_initial_searchlist) = *GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist;
+ /* Remember the last search directory added at startup, now that
+ malloc will no longer be the one from dl-minimal.c. */
+ GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
+
if (prelinked)
{
if (main_map->l_info [ADDRIDX (DT_GNU_CONFLICT)] != NULL)
@@ -2288,10 +2292,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
lossage);
}
- /* Remember the last search directory added at startup, now that
- malloc will no longer be the one from dl-minimal.c. */
- GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
-
if (! prelinked && rtld_multiple_ref)
{
/* There was an explicit ref to the dynamic linker as a shared lib.
--
1.7.3.4

View File

@ -0,0 +1,22 @@
diff --git a/resolv/res_send.c b/resolv/res_send.c
index 97142b7..a001c1e 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -549,7 +549,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
ns, ansp, ansp2, nansp2, resplen2);
if (n < 0)
return (-1);
- if (n == 0 && (buf2 == NULL || resplen2 == 0))
+ if (n == 0 && (buf2 == NULL || *resplen2 == 0))
goto next_ns;
} else {
/* Use datagrams. */
@@ -559,7 +559,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
ansp2, nansp2, resplen2);
if (n < 0)
return (-1);
- if (n == 0 && (buf2 == NULL || resplen2 == 0))
+ if (n == 0 && (buf2 == NULL || *resplen2 == 0))
goto next_ns;
if (v_circuit)
// XXX Check whether both requests failed or

View File

@ -0,0 +1,56 @@
--- glibc-2.14/nis/Makefile
+++ glibc-2.14-2/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.
@@ -69,6 +69,8 @@ libnss_nisplus-inhibit-o = $(filter-out .os,$(object-suffixes))
include ../Rules
+CFLAGS-nis_findserv.c += -fno-strict-aliasing
+CFLAGS-ypclnt.c += -fno-strict-aliasing
$(objpfx)libnss_compat.so: $(objpfx)libnsl.so$(libnsl.so-version)
$(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \
--- glibc-2.14/sunrpc/Makefile
+++ glibc-2.14-2/sunrpc/Makefile
@@ -53,7 +53,7 @@ headers-in-tirpc = $(addprefix rpc/,auth.h auth_unix.h clnt.h pmap_clnt.h \
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
@@ -152,6 +152,10 @@ CFLAGS-openchild.c = -fexceptions
CPPFLAGS += -D_RPC_THREAD_SAFE_
+CFLAGS-clnt_tcp.c += -fno-strict-aliasing
+CFLAGS-clnt_udp.c += -fno-strict-aliasing
+CFLAGS-clnt_unix.c += -fno-strict-aliasing
+
$(objpfx)tst-getmyaddr: $(common-objpfx)linkobj/libc.so
$(objpfx)tst-xdrmem: $(common-objpfx)linkobj/libc.so
$(objpfx)tst-xdrmem2: $(common-objpfx)linkobj/libc.so
--- a/include/libc-symbols.h
+++ b/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)

View File

@ -0,0 +1,118 @@
On Monday, June 06, 2011 13:00:50 Mike Frysinger wrote:
> On Monday, June 06, 2011 04:51:29 Andreas Schwab wrote:
> > Paweł Sikora <pluto@agmk.net> writes:
> > > git bisect shows first bad commit:
> > >
> > > 4bff6e0175ed195871f4e01cc4c4c33274b8f6e3 is the first bad commit
> > > commit 4bff6e0175ed195871f4e01cc4c4c33274b8f6e3
> > > Author: Andreas Schwab <schwab@redhat.com>
> > > Date: Fri Feb 25 20:49:48 2011 -0500
> > >
> > > Fix memory leak in dlopen with RTLD_NOLOAD.
> >
> > See <http://sourceware.org/ml/libc-hacker/2010-09/msg00009.html> and
> > <http://sourceware.org/ml/libc-hacker/2011-02/msg00004.html> for the
> > original, working patches.
>
> thanks, i'm seeing basically the same crash with the mpd server (music
> daemon)
in case it's helpful to someone else, this is the patch i'm using
-mike
partially revert 4bff6e0175ed195871f4e01cc4c4c33274b8f6e3
http://sourceware.org/ml/libc-alpha/2011-06/msg00006.html
--- a/elf/dl-libc.c
+++ b/elf/dl-libc.c
@@ -279,6 +279,10 @@ libc_freeres_fn (free_mem)
if (! old->dont_free)
free (old);
}
+
+ /* Free the initfini dependency list. */
+ if (l->l_free_initfini)
+ free (l->l_initfini);
}
if (__builtin_expect (GL(dl_ns)[ns]._ns_global_scope_alloc, 0) != 0
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -2240,6 +2240,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
lnp->dont_free = 1;
lnp = lnp->next;
}
+ l->l_free_initfini = 0;
if (l != &GL(dl_rtld_map))
_dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0,
--- a/elf/dl-close.c
+++ b/elf/dl-close.c
@@ -119,17 +119,8 @@ _dl_close_worker (struct link_map *map)
if (map->l_direct_opencount > 0 || map->l_type != lt_loaded
|| dl_close_state != not_pending)
{
- if (map->l_direct_opencount == 0)
- {
- if (map->l_type == lt_loaded)
- dl_close_state = rerun;
- else if (map->l_type == lt_library)
- {
- struct link_map **oldp = map->l_initfini;
- map->l_initfini = map->l_orig_initfini;
- _dl_scope_free (oldp);
- }
- }
+ if (map->l_direct_opencount == 0 && map->l_type == lt_loaded)
+ dl_close_state = rerun;
/* There are still references to this object. Do nothing more. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0))
--- a/elf/dl-deps.c
+++ b/elf/dl-deps.c
@@ -478,6 +478,7 @@ _dl_map_object_deps (struct link_map *map,
nneeded * sizeof needed[0]);
atomic_write_barrier ();
l->l_initfini = l_initfini;
+ l->l_free_initfini = 1;
}
/* If we have no auxiliary objects just go on to the next map. */
@@ -662,6 +663,7 @@ Filters not supported with LD_TRACE_PRELINKING"));
l_initfini[nlist] = NULL;
atomic_write_barrier ();
map->l_initfini = l_initfini;
+ map->l_free_initfini = 1;
if (l_reldeps != NULL)
{
atomic_write_barrier ();diff --git a/include/link.h b/include/link.h
@@ -686,5 +686,5 @@ Filters not supported with LD_TRACE_PRELINKING"));
_dl_scope_free (old_l_reldeps);
}
if (old_l_initfini != NULL)
- map->l_orig_initfini = old_l_initfini;
+ _dl_scope_free (old_l_initfini);
--- a/include/link.h
+++ b/include/link.h
@@ -192,6 +192,9 @@ struct link_map
during LD_TRACE_PRELINKING=1
contains any DT_SYMBOLIC
libraries. */
+ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be
+ freed, ie. not allocated with
+ the dummy malloc in ld.so. */
/* Collected information about own RPATH directories. */
struct r_search_path_struct l_rpath_dirs;
@@ -240,9 +240,6 @@ struct link_map
/* List of object in order of the init and fini calls. */
struct link_map **l_initfini;
- /* The init and fini list generated at startup, saved when the
- object is also loaded dynamically. */
- struct link_map **l_orig_initfini;
/* List of the dependencies introduced through symbol binding. */
struct link_map_reldeps

View File

@ -0,0 +1,40 @@
diff -Nru glibc-2.16.0.orig/localedata/SUPPORTED.openmamba glibc-2.16.0/localedata/SUPPORTED.openmamba
--- glibc-2.16.0.orig/localedata/SUPPORTED.openmamba 1970-01-01 01:00:00.000000000 +0100
+++ glibc-2.16.0/localedata/SUPPORTED.openmamba 2012-11-18 13:28:51.661087792 +0100
@@ -0,0 +1,36 @@
+# This file names the currently supported and somewhat tested locales.
+# If you have any additions please file a glibc bug report.
+SUPPORTED-LOCALES=\
+de_AT.UTF-8/UTF-8 \
+de_AT/ISO-8859-1 \
+de_AT@euro/ISO-8859-15 \
+de_DE.UTF-8/UTF-8 \
+de_DE/ISO-8859-1 \
+de_DE@euro/ISO-8859-15 \
+en_GB.UTF-8/UTF-8 \
+en_GB/ISO-8859-1 \
+en_HK.UTF-8/UTF-8 \
+en_HK/ISO-8859-1 \
+en_IE.UTF-8/UTF-8 \
+en_IE/ISO-8859-1 \
+en_IE@euro/ISO-8859-15 \
+en_IN/UTF-8 \
+en_PH.UTF-8/UTF-8 \
+en_PH/ISO-8859-1 \
+en_US.UTF-8/UTF-8 \
+en_US/ISO-8859-1 \
+es_ES.UTF-8/UTF-8 \
+es_ES/ISO-8859-1 \
+es_ES@euro/ISO-8859-15 \
+es_MX.UTF-8/UTF-8 \
+es_MX/ISO-8859-1 \
+fa_IR/UTF-8 \
+fr_FR.UTF-8/UTF-8 \
+fr_FR/ISO-8859-1 \
+fr_FR@euro/ISO-8859-15 \
+it_CH.UTF-8/UTF-8 \
+it_CH/ISO-8859-1 \
+it_IT.UTF-8/UTF-8 \
+it_IT/ISO-8859-1 \
+it_IT@euro/ISO-8859-15 \
+ja_JP.EUC-JP/EUC-JP \

View File

@ -0,0 +1,11 @@
--- glibc-2.16.0.orig/manual/texinfo.tex 2012-06-30 21:12:34.000000000 +0200
+++ glibc-2.16.0/manual/texinfo.tex 2012-07-02 01:11:41.500955548 +0200
@@ -1107,7 +1107,7 @@
% #1 is a control sequence in which to do the replacements,
% which we \xdef.
\def\txiescapepdf#1{%
- \ifx\pdfescapestring\relax
+ \ifx\pdfescapestring\thisisundefined
% No primitive available; should we give a warning or log?
% Many times it won't matter.
\else

View File

@ -0,0 +1,38 @@
diff -Nru glibc-2.4.orig/manual/arith.texi glibc-2.4/manual/arith.texi
--- glibc-2.4.orig/manual/arith.texi 2004-10-06 05:02:14.000000000 +0200
+++ glibc-2.4/manual/arith.texi 2006-06-09 13:14:46.000000000 +0200
@@ -778,8 +778,7 @@
@comment fenv.h
@comment ISO
-@deftypefun int fesetexceptflag (const fexcept_t *@var{flagp}, int
-@var{excepts})
+@deftypefun int fesetexceptflag (const fexcept_t *@var{flagp}, int@var{excepts})
This function restores the flags for the exceptions indicated by
@var{excepts} to the values stored in the variable pointed to by
@var{flagp}.
diff -Nru glibc-2.4.orig/manual/errno.texi glibc-2.4/manual/errno.texi
--- glibc-2.4.orig/manual/errno.texi 2005-12-24 21:21:03.000000000 +0100
+++ glibc-2.4/manual/errno.texi 2006-06-09 13:14:46.000000000 +0200
@@ -1494,7 +1494,7 @@
@comment error.h
@comment GNU
-@deftypevar {void (*} error_print_progname ) (void)
+@deftypevar {void *} error_print_progname (void)
If the @code{error_print_progname} variable is defined to a non-zero
value the function pointed to is called by @code{error} or
@code{error_at_line}. It is expected to print the program name or do
diff -Nru glibc-2.4.orig/manual/sysinfo.texi glibc-2.4/manual/sysinfo.texi
--- glibc-2.4.orig/manual/sysinfo.texi 2003-11-29 07:38:43.000000000 +0100
+++ glibc-2.4/manual/sysinfo.texi 2006-06-09 13:14:46.000000000 +0200
@@ -1066,8 +1066,7 @@
@comment sysctl.h
@comment BSD
-@deftypefun int sysctl (int *@var{names}, int @var{nlen}, void *@var{oldval},
- size_t *@var{oldlenp}, void *@var{newval}, size_t @var{newlen})
+@deftypefun int sysctl (int *@var{names}, int @var{nlen}, void *@var{oldval},size_t *@var{oldlenp}, void *@var{newval}, size_t @var{newlen})
@code{sysctl} gets or sets a specified system parameter. There are so
many of these parameters that it is not practical to list them all here,

View File

@ -0,0 +1,361 @@
Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
Date: 2007-10-07
Initial Package Version: 2.6.1
Upstream Status: Rejected Upstream
http://sources.redhat.com/ml/libc-alpha/2000-08/msg00052.html
Origin: OpenBSD, then see the url above, the ported to Owl/Openwall.
http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/glibc/\
glibc-2.3.5-openbsd-strlcpy-strlcat.diff
Then I retrieved the latest copies of strlcat.c and strlcpy.c from OpenBSD-cvs,
which had trivial changes.
Description: http://www.courtesan.com/todd/papers/strlcpy.html
diff -Naur glibc-2.6.1.orig/manual/strlcpy.3 glibc-2.6.1/manual/strlcpy.3
--- glibc-2.6.1.orig/manual/strlcpy.3 1970-01-01 00:00:00.000000000 +0000
+++ glibc-2.6.1/manual/strlcpy.3 2007-08-04 06:48:03.000000000 +0000
@@ -0,0 +1,186 @@
+.\" $OpenBSD: strlcpy.3,v 1.18 2005/08/06 03:24:19 jaredy Exp $
+.\"
+.\" Copyright (c) 1998, 2000 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.Dd June 22, 1998
+.Dt STRLCPY 3
+.Os
+.Sh NAME
+.Nm strlcpy ,
+.Nm strlcat
+.Nd size-bounded string copying and concatenation
+.Sh SYNOPSIS
+.Fd #include <string.h>
+.Ft size_t
+.Fn strlcpy "char *dst" "const char *src" "size_t size"
+.Ft size_t
+.Fn strlcat "char *dst" "const char *src" "size_t size"
+.Sh DESCRIPTION
+The
+.Fn strlcpy
+and
+.Fn strlcat
+functions copy and concatenate strings respectively.
+They are designed
+to be safer, more consistent, and less error prone replacements for
+.Xr strncpy 3
+and
+.Xr strncat 3 .
+Unlike those functions,
+.Fn strlcpy
+and
+.Fn strlcat
+take the full size of the buffer (not just the length) and guarantee to
+NUL-terminate the result (as long as
+.Fa size
+is larger than 0 or, in the case of
+.Fn strlcat ,
+as long as there is at least one byte free in
+.Fa dst ) .
+Note that a byte for the NUL should be included in
+.Fa size .
+Also note that
+.Fn strlcpy
+and
+.Fn strlcat
+only operate on true
+.Dq C
+strings.
+This means that for
+.Fn strlcpy
+.Fa src
+must be NUL-terminated and for
+.Fn strlcat
+both
+.Fa src
+and
+.Fa dst
+must be NUL-terminated.
+.Pp
+The
+.Fn strlcpy
+function copies up to
+.Fa size
+- 1 characters from the NUL-terminated string
+.Fa src
+to
+.Fa dst ,
+NUL-terminating the result.
+.Pp
+The
+.Fn strlcat
+function appends the NUL-terminated string
+.Fa src
+to the end of
+.Fa dst .
+It will append at most
+.Fa size
+- strlen(dst) - 1 bytes, NUL-terminating the result.
+.Sh RETURN VALUES
+The
+.Fn strlcpy
+and
+.Fn strlcat
+functions return the total length of the string they tried to create.
+For
+.Fn strlcpy
+that means the length of
+.Fa src .
+For
+.Fn strlcat
+that means the initial length of
+.Fa dst
+plus
+the length of
+.Fa src .
+While this may seem somewhat confusing, it was done to make
+truncation detection simple.
+.Pp
+Note, however, that if
+.Fn strlcat
+traverses
+.Fa size
+characters without finding a NUL, the length of the string is considered
+to be
+.Fa size
+and the destination string will not be NUL-terminated (since there was
+no space for the NUL).
+This keeps
+.Fn strlcat
+from running off the end of a string.
+In practice this should not happen (as it means that either
+.Fa size
+is incorrect or that
+.Fa dst
+is not a proper
+.Dq C
+string).
+The check exists to prevent potential security problems in incorrect code.
+.Sh EXAMPLES
+The following code fragment illustrates the simple case:
+.Bd -literal -offset indent
+char *s, *p, buf[BUFSIZ];
+
+\&...
+
+(void)strlcpy(buf, s, sizeof(buf));
+(void)strlcat(buf, p, sizeof(buf));
+.Ed
+.Pp
+To detect truncation, perhaps while building a pathname, something
+like the following might be used:
+.Bd -literal -offset indent
+char *dir, *file, pname[MAXPATHLEN];
+
+\&...
+
+if (strlcpy(pname, dir, sizeof(pname)) >= sizeof(pname))
+ goto toolong;
+if (strlcat(pname, file, sizeof(pname)) >= sizeof(pname))
+ goto toolong;
+.Ed
+.Pp
+Since it is known how many characters were copied the first time, things
+can be sped up a bit by using a copy instead of an append:
+.Bd -literal -offset indent
+char *dir, *file, pname[MAXPATHLEN];
+size_t n;
+
+\&...
+
+n = strlcpy(pname, dir, sizeof(pname));
+if (n >= sizeof(pname))
+ goto toolong;
+if (strlcpy(pname + n, file, sizeof(pname) - n) >= sizeof(pname) - n)
+ goto toolong;
+.Ed
+.Pp
+However, one may question the validity of such optimizations, as they
+defeat the whole purpose of
+.Fn strlcpy
+and
+.Fn strlcat .
+As a matter of fact, the first version of this manual page got it wrong.
+.Sh SEE ALSO
+.Xr snprintf 3 ,
+.Xr strncat 3 ,
+.Xr strncpy 3
+.Sh HISTORY
+The
+.Fn strlcpy
+and
+.Fn strlcat
+functions first appeared in
+.Ox 2.4 .
diff -Naur glibc-2.6.1.orig/string/Makefile glibc-2.6.1/string/Makefile
--- glibc-2.6.1.orig/string/Makefile 2007-02-01 16:10:11.000000000 +0000
+++ glibc-2.6.1/string/Makefile 2007-08-04 06:48:35.000000000 +0000
@@ -40,7 +40,12 @@
addsep replace) \
envz basename \
strcoll_l strxfrm_l string-inlines memrchr \
- xpg-strerror strerror_l
+ xpg-strerror strerror_l strlcat strlcpy
+
+# These routines will be omitted from the libc shared object.
+# Instead the static object files will be included in a special archive
+# linked against when the shared library will be used.
+static-only-routines = strlcat strlcpy
# Gcc internally generates calls to unbounded memcpy and memset
# for -fbounded-pointer compiles. Glibc uses memchr for explicit checks.
diff -Naur glibc-2.6.1.orig/string/string.h glibc-2.6.1/string/string.h
--- glibc-2.6.1.orig/string/string.h 2007-02-01 16:08:52.000000000 +0000
+++ glibc-2.6.1/string/string.h 2007-08-04 06:48:03.000000000 +0000
@@ -354,6 +354,24 @@
extern char *strsep (char **__restrict __stringp,
__const char *__restrict __delim)
__THROW __nonnull ((1, 2));
+
+/*
+ * Appends __src to string __dst of size __n (unlike strncat, __n is the
+ * full size of __dst, not space left). At most __n-1 characters
+ * will be copied. Always NUL terminates (unless __n <= strlen(__dst)).
+ * Returns strlen(__src) + MIN(__n, strlen(initial __dst)).
+ * If retval >= __n, truncation occurred.
+ */
+extern size_t strlcat (char *__dst, __const char *__src, size_t __n)
+ __THROW __nonnull ((1, 2));
+
+/*
+ * Copy __src to string __dst of size __n. At most __n-1 characters
+ * will be copied. Always NUL terminates (unless __n == 0).
+ * Returns strlen(__src); if retval >= __n, truncation occurred.
+ */
+extern size_t strlcpy (char *__dst, __const char *__src, size_t __n)
+ __THROW __nonnull ((1, 2));
#endif
#ifdef __USE_GNU
diff -Naur glibc-2.6.1.orig/string/strlcat.c glibc-2.6.1/string/strlcat.c
--- glibc-2.6.1.orig/string/strlcat.c 1970-01-01 00:00:00.000000000 +0000
+++ glibc-2.6.1/string/strlcat.c 2007-08-04 06:48:03.000000000 +0000
@@ -0,0 +1,55 @@
+/* $OpenBSD: strlcat.c,v 1.13 2005/08/08 08:05:37 espie Exp $ */
+
+/*
+ * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/types.h>
+#include <string.h>
+
+/*
+ * Appends src to string dst of size siz (unlike strncat, siz is the
+ * full size of dst, not space left). At most siz-1 characters
+ * will be copied. Always NUL terminates (unless siz <= strlen(dst)).
+ * Returns strlen(src) + MIN(siz, strlen(initial dst)).
+ * If retval >= siz, truncation occurred.
+ */
+size_t
+strlcat(char *dst, const char *src, size_t siz)
+{
+ char *d = dst;
+ const char *s = src;
+ size_t n = siz;
+ size_t dlen;
+
+ /* Find the end of dst and adjust bytes left but don't go past end */
+ while (n-- != 0 && *d != '\0')
+ d++;
+ dlen = d - dst;
+ n = siz - dlen;
+
+ if (n == 0)
+ return(dlen + strlen(s));
+ while (*s != '\0') {
+ if (n != 1) {
+ *d++ = *s;
+ n--;
+ }
+ s++;
+ }
+ *d = '\0';
+
+ return(dlen + (s - src)); /* count does not include NUL */
+}
diff -Naur glibc-2.6.1.orig/string/strlcpy.c glibc-2.6.1/string/strlcpy.c
--- glibc-2.6.1.orig/string/strlcpy.c 1970-01-01 00:00:00.000000000 +0000
+++ glibc-2.6.1/string/strlcpy.c 2007-08-04 06:48:03.000000000 +0000
@@ -0,0 +1,51 @@
+/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */
+
+/*
+ * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/types.h>
+#include <string.h>
+
+/*
+ * Copy src to string dst of size siz. At most siz-1 characters
+ * will be copied. Always NUL terminates (unless siz == 0).
+ * Returns strlen(src); if retval >= siz, truncation occurred.
+ */
+size_t
+strlcpy(char *dst, const char *src, size_t siz)
+{
+ char *d = dst;
+ const char *s = src;
+ size_t n = siz;
+
+ /* Copy as many bytes as will fit */
+ if (n != 0) {
+ while (--n != 0) {
+ if ((*d++ = *s++) == '\0')
+ break;
+ }
+ }
+
+ /* Not enough room in dst, add NUL and traverse rest of src */
+ if (n == 0) {
+ if (siz != 0)
+ *d = '\0'; /* NUL-terminate dst */
+ while (*s++)
+ ;
+ }
+
+ return(s - src - 1); /* count does not include NUL */
+}

29
glibc-2.7-gcc-4.3.patch Normal file
View File

@ -0,0 +1,29 @@
Submitted By: Tushar Teredesai <tushar@linuxfromscratch.org>
Date: 2008-04-18
Initial Package Version: 2.7
Upstream Status: Fixed
Origin: glibc cvs
Description: Fix compilation with gcc-4.3
===================================================================
RCS file: /cvs/glibc/libc/configure,v
retrieving revision 1.462
retrieving revision 1.463
diff -u -r1.462 -r1.463
--- libc/configure 2008/01/24 20:21:23 1.462
+++ libc/configure 2008/02/01 00:20:07 1.463
@@ -5065,8 +5065,12 @@
# header directory and add that to the list. NOTE: Only does the right
# thing on a system that doesn't need fixincludes. (Not presently a problem.)
if test -n "$sysheaders"; then
- ccheaders=`$CC -print-file-name=include`
- SYSINCLUDES="-nostdinc -isystem $ccheaders \
+ SYSINCLUDES=-nostdinc
+ for d in include include-fixed; do
+ i=`$CC -print-file-name="$d"` && test "x$i" != "x$d" &&
+ SYSINCLUDES="$SYSINCLUDES -isystem $i"
+ done
+ SYSINCLUDES="$SYSINCLUDES \
-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
if test -n "$CXX"; then
cxxversion=`$CXX -dumpversion 2>&5` &&

View File

@ -0,0 +1,26 @@
2007-11-01 Ryan S. Arnold <rsa@us.ibm.com>
* nptl/sysdeps/unix/sysv/linux/lowlevellock.c
(__lll_timedlock_wait) Wake before returning timeout.
--- glibc-2.7/nptl/sysdeps/unix/sysv/linux/lowlevellock.c 2007-08-14 14:59:34.000000000 -0500
+++ glibc-2.7.new/nptl/sysdeps/unix/sysv/linux/lowlevellock.c 2007-11-01 12:25:49.000000000 -0500
@@ -76,12 +76,16 @@
--rt.tv_sec;
}
+ int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
/* Already timed out? */
if (rt.tv_sec < 0)
- return ETIMEDOUT;
+ {
+ if (oldval == 0)
+ lll_futex_wake (futex, 1, private);
+ return ETIMEDOUT;
+ }
/* Wait. */
- int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
if (oldval != 0)
lll_futex_timed_wait (futex, 2, &rt, private);
}

View File

@ -0,0 +1,12 @@
--- sysdeps/i386/i586/memcpy_chk.S.i586 2007-10-02 07:00:06.000000000 -0700
+++ sysdeps/i386/i586/memcpy_chk.S 2007-10-02 06:58:51.000000000 -0700
@@ -0,0 +1 @@
+#include <sysdeps/i386/i686/memcpy_chk.S>
--- sysdeps/i386/i586/mempcpy_chk.S.i586 2007-10-02 07:00:06.000000000 -0700
+++ sysdeps/i386/i586/mempcpy_chk.S 2007-10-02 06:58:51.000000000 -0700
@@ -0,0 +1 @@
+#include <sysdeps/i386/i686/mempcpy_chk.S>
--- sysdeps/i386/i586/memset_chk.S.i586 2007-10-02 07:00:06.000000000 -0700
+++ sysdeps/i386/i586/memset_chk.S 2007-10-02 06:58:51.000000000 -0700
@@ -0,0 +1 @@
+#include <sysdeps/i386/i686/memset_chk.S>

View File

@ -0,0 +1,45 @@
diff -Nru glibc-2.7.orig/sysdeps/posix/getaddrinfo.c glibc-2.7/sysdeps/posix/getaddrinfo.c
--- glibc-2.7.orig/sysdeps/posix/getaddrinfo.c 2007-10-17 18:05:12.000000000 +0200
+++ glibc-2.7/sysdeps/posix/getaddrinfo.c 2008-02-05 19:53:08.000000000 +0100
@@ -263,7 +263,7 @@
static int
gaih_inet (const char *name, const struct gaih_service *service,
const struct addrinfo *req, struct addrinfo **pai,
- unsigned int *naddrs)
+ unsigned int *naddrs, bool usable_ipv6)
{
const struct gaih_typeproto *tp = gaih_inet_typeproto;
struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
@@ -706,7 +706,7 @@
if (fct != NULL)
{
if (req->ai_family == AF_INET6
- || req->ai_family == AF_UNSPEC)
+ || (req->ai_family == AF_UNSPEC && usable_ipv6))
{
gethosts (AF_INET6, struct in6_addr);
no_inet6_data = no_data;
@@ -1914,7 +1914,7 @@
if (hints->ai_family == AF_UNSPEC || hints->ai_family == AF_INET
|| hints->ai_family == AF_INET6)
{
- last_i = gaih_inet (name, pservice, hints, end, &naddrs);
+ last_i = gaih_inet (name, pservice, hints, end, &naddrs, seen_ipv6);
if (last_i != 0)
{
freeaddrinfo (p);
diff -Nru glibc-2.7.orig/sysdeps/unix/sysv/linux/check_pf.c glibc-2.7/sysdeps/unix/sysv/linux/check_pf.c
--- glibc-2.7.orig/sysdeps/unix/sysv/linux/check_pf.c 2007-08-29 18:49:45.000000000 +0200
+++ glibc-2.7/sysdeps/unix/sysv/linux/check_pf.c 2008-02-05 19:50:30.000000000 +0100
@@ -201,7 +201,10 @@
{
out_v6:
if (!IN6_IS_ADDR_LOOPBACK (address ?: local))
- *seen_ipv6 = true;
+ if (ifam->ifa_scope < RT_SCOPE_LINK)
+ {
+ *seen_ipv6 = true;
+ }
}
if (ifam->ifa_flags & (IFA_F_DEPRECATED

View File

@ -0,0 +1,11 @@
--- glibc-2.7/sysdeps/i386/fpu/ftestexcept.c.vaniglia 2009-01-28 22:38:10.000000000 +0100
+++ glibc-2.7/sysdeps/i386/fpu/ftestexcept.c 2009-01-28 22:39:05.000000000 +0100
@@ -26,7 +26,7 @@
int
fetestexcept (int excepts)
{
- int temp;
+ short temp;
int xtemp = 0;
/* Get current exceptions. */

View File

@ -0,0 +1,12 @@
--- ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h.orig
+++ ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
@@ -73,6 +73,9 @@
# define DOCARGS_5 DOCARGS_4
# define UNDOCARGS_5 UNDOCARGS_4
+# define DOCARGS_6 DOCARGS_5
+# define UNDOCARGS_6 UNDOCARGS_5
+
# ifdef IS_IN_libpthread
# define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)

View File

@ -0,0 +1,19 @@
commit 2d80bda39073a35af4b904d27fa1511cd309b26f
Author: Nathan Sidwell <nathan@codesourcery.com>
Date: Fri Jan 6 20:14:44 2012 +0000
Add ARM dependency of libmemusage.so on libc_nonshared.a.
diff --git a/sysdeps/arm/Makefile b/sysdeps/arm/Makefile
index 5651161..1a88430 100644
--- a/ports/sysdeps/arm/Makefile
+++ b/ports/sysdeps/arm/Makefile
@@ -7,3 +7,8 @@ endif
ifeq ($(subdir),csu)
gen-as-const-headers += tlsdesc.sym
endif
+
+# to pull in __aeabi_read_tp, needed for tls
+ifeq ($(subdir),malloc)
+$(objpfx)libmemusage.so: $(common-objpfx)libc_nonshared.a
+endif

1134
glibc.spec Normal file

File diff suppressed because it is too large Load Diff

25
nscd-conf Normal file
View File

@ -0,0 +1,25 @@
#
# Name Service Cache Daemon configuration file
#
logfile /var/log/nscd/nscd.log
threads 6
server-user nscd
debug-level 0
enable-cache passwd yes
positive-time-to-live passwd 600
negative-time-to-live passwd 20
suggested-size passwd 211
check-files passwd yes
enable-cache group yes
positive-time-to-live group 3600
negative-time-to-live group 60
suggested-size group 211
check-files group yes
enable-cache hosts no
positive-time-to-live hosts 3600
negative-time-to-live hosts 6
suggested-size hosts 211
check-files hosts yes

48
nscd-initscript Normal file
View File

@ -0,0 +1,48 @@
#!/bin/bash
# Begin $rc_base/init.d/nscd - Name Service Cache Daemon loader
#
# Created by Silvan Calarco - silvan.calarco@qilinux.it
#
# nscd This starts and stops nscd daemon.
#
# chkconfig: 2345 17 93
#
# description: Syslogd and Klogd loaders
#
source /etc/sysconfig/rc
source $rc_functions
case "$1" in
start)
echo -n "Starting name service cache daemon..."
nscd
evaluate_retval
echo
;;
stop)
echo -n "Stopping name service cache daemon..."
killproc nscd
evaluate_retval
echo
;;
restart)
$0 stop
sleep 1
$0 start
;;
status)
statusproc nscd
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
# End $rc_base/init.d/sysklogd

8
nscd-logrotate Normal file
View File

@ -0,0 +1,8 @@
/var/log/nscd/nscd.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
}