Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Sat, 13 Oct 2012 22:09:57 +0400
From: Vasily Kulikov <segoon@...nwall.com>
To: owl-dev@...ts.openwall.com
Subject: glibc

Hi,

This is my provisional glibc spec version.  It is buildable under
Owl-current and it passes full world rebuilds.  I got no runtime errors
while testing the resulting binaries.

Also:

1) Updated/dropped all patches except the following:

Patch100: glibc-2.3.5-fedora.diff
Patch303: glibc-2.3.5-openbsd-alt-sys-queue.diff
Patch313: glibc-2.3.5-alt-assume_kernel.diff
Patch400: glibc-2.3.3-owl-crypt_freesec.diff
Patch401: glibc-2.3.5-owl-alt-res_randomid.diff
Patch405: glibc-2.3.5-owl-alt-syslog-ident.diff
Patch406: glibc-2.16.0-mjt-owl-alt-syslog-timestamp.diff
Patch407: glibc-2.3.5-owl-alt-resolv-QFIXEDSZ-underfills.diff
Patch409: glibc-2.3.3-owl-tmp-scripts.diff
Patch411: glibc-2.16.0-owl-alt-sanitize-env.diff

As Dmitry might have some thoughts of some patches, I haven't touched these yet.
All other patches are easy.  If anybody has thoughts how these should be
handled -- you're welcome to justify it.  Otherwise I'll try to dig into
them myself.


2) Looks like glibc 2.16.0 needs make update:

http://lists.gnu.org/archive/html/help-make/2012-02/msg00025.html

Our make 3.81 compiles glibc only with -j1.


3) -mpreferred-stack-boundary=2 breaks glibc's SSE4 code.  Findutils'
test script fails with segfault.  It runs OK if glibc is compiled with
-mstackrealign.  I suppose we should add it to %optflags_lib.


4) Now glibc doesn't contain timezone files.  Our current spec file uses
a single file from glibc's timezone/: UTC, which is copied into
%buildroot/etc/localtime.

I suppose we should fully switch to tzdata's files and move this config
file to tzdata.spec.


The glibc.spec is as following:

# $Owl: Owl/packages/glibc/glibc.spec,v 1.128 2012/02/18 19:48:24 solar Exp $

%define BUILD_PROFILE 0
%define BUILD_LOCALES 1
%define BUILD_LOCALES_UTF8 1

Summary: The GNU libc libraries.
Name: glibc
Version: 2.16.0
%define crypt_bf_version 1.2
Release: owl1
License: LGPL
Group: System Environment/Libraries
URL: http://www.gnu.org/software/libc/
Source0: glibc-%version.tar.xz
# ftp://ftp.gnu.org/gnu/%name/glibc-%version.tar.bz2
# http://www.openwall.com/crypt/crypt_blowfish-%crypt_bf_version.tar.gz
Source1: crypt_blowfish-%crypt_bf_version.tar.gz
Source2: crypt_freesec.c
Source3: crypt_freesec.h
Source2: strlcpy.3

# Patches
# -------
# We are using the following numbering rules for glibc patches:
#    0-99 - CVS
# 100-199 - RH
# 200-219 - SuSE
# 220-239 - Gentoo
# 300-399 - ALT
# 400-... - Owl

# RH
# TODO
Patch100: glibc-2.3.5-fedora.diff

# SuSE
Patch200: glibc-2.3.2-suse-resolv-response-length.diff

# ALT
Patch301: glibc-2.3.5-alt-string2.diff
# TODO
Patch303: glibc-2.3.5-openbsd-alt-sys-queue.diff
Patch304: glibc-2.3.5-alt-getopt-optind.diff
Patch306: glibc-2.3.5-alt-asprintf.diff
Patch307: glibc-2.16.0-alt-libio-bound.diff
Patch308: glibc-2.16.0-openbsd-strlcpy-strlcat.diff
Patch309: glibc-2.3.5-alt-iconv_prog-replace.diff
Patch310: glibc-2.16.0-alt-i18n.diff
Patch311: glibc-2.16.0-alt-relocate-helper-libs.diff
Patch312: glibc-2.3.5-alt-linux-dl-execstack.diff
# TODO
Patch313: glibc-2.3.5-alt-assume_kernel.diff
Patch314: glibc-2.3.6-alt-__libc_enable_secure.diff

# Owl
# TODO
Patch400: glibc-2.3.3-owl-crypt_freesec.diff
# TODO
Patch401: glibc-2.3.5-owl-alt-res_randomid.diff
Patch402: glibc-2.3.2-owl-iscntrl.diff
Patch403: glibc-2.16.0-owl-alt-ldd.diff
# TODO
Patch405: glibc-2.3.5-owl-alt-syslog-ident.diff
# TODO
Patch406: glibc-2.16.0-mjt-owl-alt-syslog-timestamp.diff
# TODO
Patch407: glibc-2.3.5-owl-alt-resolv-QFIXEDSZ-underfills.diff
Patch408: glibc-2.16.0-owl-tmpfile.diff
# TODO
Patch409: glibc-2.3.3-owl-tmp-scripts.diff
Patch410: glibc-2.3.3-owl-rpcgen-cpp.diff
# TODO
Patch411: glibc-2.16.0-owl-alt-sanitize-env.diff
Patch412: glibc-2.16.0-owl-crypt-wb.diff

Requires: /etc/nsswitch.conf
Provides: glibc-crypt_blowfish = %crypt_bf_version, ldconfig
Obsoletes: ldconfig
BuildRequires: gcc >= 3.2
BuildRoot: /override/%name-%version

%description
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 and database.

%package utils
Summary: The GNU libc miscellaneous utilities.
Group: System Environment/Base
Requires: %name >= %version

%description utils
The glibc-utils package contains miscellaneous glibc utilities.

%package devel
Summary: Header and object files for development using standard C libraries.
Group: Development/Libraries
Requires: kernel-headers >= 2.2.1
Provides: glibc-crypt_blowfish-devel = %crypt_bf_version
Conflicts: texinfo < 3.11

%description devel
The glibc-devel package contains the header and object files necessary
for developing programs which use the standard C libraries (which are
used by nearly all programs).  If you are developing programs which
will use the standard C libraries, your system needs to have these
standard header and object files available in order to create the
executables.

%if %BUILD_PROFILE
%package profile
Summary: The GNU libc libraries, including support for gprof profiling.
Group: Development/Libraries
Requires: %name = %version-%release

%description profile
The glibc-profile package includes the GNU libc libraries and support
for profiling using the gprof program.  Profiling is analyzing a
program's functions to see how much CPU time they use and determining
which functions are calling other functions during execution.  To use
gprof to profile a program, your program needs to use the GNU libc
libraries included in glibc-profile (instead of the standard GNU libc
libraries included in the glibc package).
%endif

%ifnarch x86_64
%package compat-fake
Summary: Fake package to help upgrade glibc from 2.1.3 to 2.3+.
Group: System Environment/Libraries
Provides: libdb.so.2
Provides: libdb.so.2(GLIBC_2.0)
Provides: libdb.so.3
Provides: libdb.so.3(GLIBC_2.0)
Provides: libdb.so.3(GLIBC_2.1)

%description compat-fake
This package solves the problem with upgrading glibc 2.1.3 -based Owl to
glibc 2.3+ version by reporting necessary Provides to RPM.  All packages
in glibc 2.3+ -based Owl don't rely on libdb.so.2 and libdb.so.3.  If
you have a package which uses these older libraries, you have to recompile
that package against the db4 package supplied with Owl or create a
compatibility package with necessary binaries of old libdb libraries.
%endif

# Use optflags_lib for this package if defined.
%{expand:%%define optflags %{?optflags_lib:%optflags_lib}%{!?optflags_lib:%optflags}}

%prep
%setup -a 1 -n %name-%version

# RH
# usual glibc-fedora.patch
# %patch100 -p0

# SuSE
# avoid read buffer overruns in apps using res_* calls
%patch200 -p1

# # ALT
# # fix -Wpointer-arith issue in string2.h
%patch301 -p1
# # backport sys/queue.h from OpenBSD
# %patch303 -p1
# # set proper optind when argc < 1
%patch304 -p1
# # change asprintf/vasprintf error handling
%patch306 -p1
# # check for potential integer overflow in fread*/fwrite*
%patch307 -p1
# import strlcpy/strlcat from OpenBSD
%patch308 -p1
# # add "--replace" option to iconv utility
%patch309 -p1
# # support more ru_* locales
%patch310 -p1
# # relocate helper libraries from /%_lib to %_libdir
%patch311 -p1
# # fix mprotect return code handling in _dl_make_stack_executable()
%patch312 -p1
# # fix _dl_osversion_init(), _dl_non_dynamic_init() and
# # dl_main() functions to not assume too old kernel version
# %patch313 -p1
%patch314 -p1

# Owl
echo "Applying crypt_blowfish patch:"
patch -p1 -s < crypt_blowfish-%crypt_bf_version/glibc-2.14-crypt.diff
mv crypt/{crypt.h,gnu-crypt.h}
mv crypt_blowfish-%crypt_bf_version/*.[chS] crypt/
install -pm644 %_sourcedir/crypt_freesec.[ch] crypt/

# # FreeSec support for extended/new-style/BSDI hashes in crypt(3)
%patch400 -p1

# # improve res_randomid in the resolver
# %patch401 -p1
# # force known control characters for iscntrl(3)
%patch402 -p1
# # always execute traced object directly with dynamic linker
# # fix ldd error reporting on multilib platforms like x86-64
# # fix "ldd -u"
%patch403 -p1
# # don't blindly trust __progname for the syslog ident
# %patch405 -p1
# # use ctime_r() instead of strftime_r() in syslog(3)
# %patch406 -p1
# # avoid potential reads beyond end of undersized DNS responses
# %patch407 -p1
# # allow tmpfile(3) to use TMPDIR environment variable
%patch408 -p1
# # fix temporary file handling in the scripts
# %patch409 -p1
# avoid hardcoding of cpp binary, use execvp instead of execv
%patch410 -p1
# # sanitize the environment in a paranoid way
# %patch411 -p1
# # add atomic_write_barrier() before setting the UFC crypt() "initialized" flag
%patch412 -p1
# # allow binutils v2.2x

cat > find_provides.sh << EOF
#!/bin/sh
/usr/lib/rpm/find-provides | fgrep -v GLIBC_PRIVATE
exit 0
EOF
chmod +x find_provides.sh
cat > find_requires.sh << EOF
#!/bin/sh
/usr/lib/rpm/find-requires | fgrep -v GLIBC_PRIVATE
exit 0
EOF
chmod +x find_requires.sh

%define __find_provides %_builddir/%name-%version/find_provides.sh
%define __find_requires %_builddir/%name-%version/find_requires.sh

%if %BUILD_LOCALES
mv localedata/SUPPORTED localedata/SUPPORTED.ALL
%if %BUILD_LOCALES_UTF8
ln -s SUPPORTED.ALL localedata/SUPPORTED
%else
fgrep -v /UTF-8 localedata/SUPPORTED.ALL > localedata/SUPPORTED.NO-UTF-8
ln -s SUPPORTED.NO-UTF-8 localedata/SUPPORTED
%endif # %BUILD_LOCALES_UTF8
%endif # %BUILD_LOCALES

%build
mkdir build-%_target_cpu-linux
pushd build-%_target_cpu-linux

export libc_cv_ssp=no
CFLAGS="-g %optflags -finline-limit=2000 $F" \
../configure \
	--build=%_target_platform --target=%_target_platform \
	--prefix=%_prefix \
	--exec-prefix=%_exec_prefix \
	--bindir=%_bindir \
	--sbindir=%_sbindir \
	--sysconfdir=%_sysconfdir \
	--datadir=%_datadir \
	--includedir=%_includedir \
	--libdir=%_libdir \
	--libexecdir=%_libexecdir \
	--localstatedir=%_localstatedir \
	--sharedstatedir=%_sharedstatedir \
	--mandir=%_mandir \
	--infodir=%_infodir \
%if !%BUILD_PROFILE
	--disable-profile \
%endif
	--enable-add-ons=nptl,libidn \
	--without-cvs \
	--enable-bind-now \
    --enable-obsolete-rpc

%__make MAKE="%__make -s"
popd

%__make -C crypt_blowfish-%crypt_bf_version man

%install
rm -rf %buildroot
mkdir -p %buildroot
%__make install_root=%buildroot install -C build-%_target_cpu-linux
%__make install_root=%buildroot localedata/install-locales -C build-%_target_cpu-linux

# These man pages require special attention
mkdir -p %buildroot%_mandir/man3
install -p -m 644 crypt_blowfish-%crypt_bf_version/*.3 %buildroot%_mandir/man3/
install -p -m 644 %_sourcedir/strlcpy.3 %buildroot%_mandir/man3/
echo '.so man3/strlcpy.3' > %buildroot%_mandir/man3/strlcat.3

ln -s libbsd-compat.a %buildroot%_libdir/libbsd.a

# Relocate shared libraries used by catchsegv, memusage and xtrace
mv %buildroot/%_lib/lib{memusage,pcprofile,SegFault}.so %buildroot%_libdir/

# Replace the symlink with the file for our default timezone - use UTC
# rm %buildroot/etc/localtime
# cp -a %buildroot%_datadir/zoneinfo/UTC %buildroot/etc/localtime

# rm -r %buildroot%_datadir/zoneinfo

# Create default ldconfig configuration file
echo "include /etc/ld.so.conf.d/*.conf" > %buildroot/etc/ld.so.conf
mkdir -m 755 %buildroot/etc/ld.so.conf.d

# Truncate /etc/ld.so.cache, we'll create it in the %%post section
echo -n > %buildroot/etc/ld.so.cache

# The database support
# XXX: why is this disabled?
#mkdir -p %buildroot/var/db
#install -m 644 nss/db-Makefile %buildroot/var/db/Makefile

# Do not package obsolete pt_chown helper
rm %buildroot%_libexecdir/pt_chown

# BUILD THE FILE LIST
find %buildroot -type f -or -type l |
	grep -v '^%buildroot%_libexecdir' |
	sed 's|.*/etc|%%config &|' > rpm.filelist.in
for n in %_includedir %_libdir %_datadir; do
    find %buildroot$n -type d |
	sed 's/^/%%dir /' >> rpm.filelist.in
done

# primary filelist
sed 's|\( *\)%buildroot|\1|' < rpm.filelist.in |
	fgrep -vx '%%dir %_includedir' |
	fgrep -vx '%%dir %_libdir' |
	fgrep -vx '%%dir %_datadir' |
	fgrep -vx '%%dir %_mandir' |
	fgrep -vx '%%dir %_infodir' |
	grep -v '^%%config /etc/' |
	sort > rpm.filelist.full

%if %BUILD_PROFILE
grep '%_libdir/lib.*_p\.a' < rpm.filelist.full > profile.filelist
%endif

egrep '(%_includedir)|(%_infodir)' < rpm.filelist.full |
	fgrep -v '%_infodir/dir' |
	fgrep -v '.info-' |
	sed 's|\.info.*$|&\*|' > devel.filelist

grep -v '%_libdir/lib.*_p.a' rpm.filelist.full |
	egrep -v '(%_includedir)|(%_infodir)' > rpm.filelist

grep '%_libdir/lib.*\.a' < rpm.filelist >> devel.filelist
grep '%_libdir/.*\.o' < rpm.filelist >> devel.filelist
grep '%_libdir/lib.*\.so' < rpm.filelist >> devel.filelist
fgrep '%_mandir/man' < rpm.filelist | sed 's|$|\*|' >> devel.filelist

mv rpm.filelist rpm.filelist.full
grep -v '%_libdir/lib.*\.a' < rpm.filelist.full |
	fgrep -v '%_bindir/' |
	fgrep -v '%_sbindir/' |
	grep -v '%_libdir/.*\.o' |
	grep -v '%_libdir/lib.*\.so'|
	fgrep -v '%_mandir/man' |
	fgrep -v 'nscd' |
	fgrep -v 'sln' > rpm.filelist

# Create empty %_libdir/gconv/gconv-modules.cache
touch %buildroot%_libdir/gconv/gconv-modules.cache

# The last bit: more documentation
rm -rf documentation
mkdir documentation
install -pm644 ChangeLog documentation/
bzip2 -9qf documentation/ChangeLog*
bzip2 -9qf INSTALL NEWS 
mkdir documentation/crypt_blowfish-%crypt_bf_version
install -pm644 crypt_blowfish-%crypt_bf_version/{README,LINKS,PERFORMANCE} \
	documentation/crypt_blowfish-%crypt_bf_version/

# Final step: remove unpackaged files.
rm %buildroot%_infodir/dir
rm %buildroot%_sbindir/nscd

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%post devel
/sbin/install-info %_infodir/libc.info %_infodir/dir

%preun devel
if [ $1 -eq 0 ]; then
	/sbin/install-info --delete %_infodir/libc.info %_infodir/dir
fi

%files -f rpm.filelist
%defattr(-,root,root)
%doc README* NEWS* INSTALL* BUGS PROJECTS
%doc documentation/*
%doc hesiod/README.hesiod
%doc crypt/README.ufc-crypt
# %config(noreplace) %verify(not size md5 mtime) /etc/localtime
%ghost %config(noreplace) /etc/ld.so.cache
%config(noreplace) /etc/ld.so.conf
%dir /etc/ld.so.conf.d
%ghost %config(noreplace) %_libdir/gconv/gconv-modules.cache
%config(noreplace) /etc/rpc
# XXX
#%dir /var/db

%files utils
%defattr(-,root,root)
%_libexecdir/getconf
/sbin/sln
%_bindir/*
%_sbindir/*

%files devel -f devel.filelist
%defattr(-,root,root)

%if %BUILD_PROFILE
%files profile -f profile.filelist
%defattr(-,root,root)
%endif

%ifnarch x86_64
%files compat-fake
%endif

%changelog
* Sat Oct 13 2012 Vasiliy Kulikov <segoon-at-owl.openwall.com> 2.16.0-owl1
- Updated to 2.16.0.
- Removed all fixes related to Alpha/Sparc architectures.
- Removed gcc 3.4.5 compatibility hacks.
- Removed following obsoleted patches: cvs-20050427-canonicalize,
cvs-20051116-divdi3, cvs-20060103-ctermid, suse-getconf-default_output,
gentoo-alpha-xstat, alt-fts_palloc-cleanup, owl-info, owl-rh-pld-linker,
owl-gcc-4.3, up-memcmp, up-ld_linux.
- Updated following patches: openbsd-strlcpy-strlcat, alt-i18n,
alt-relocate-helper-libs, owl-alt-ldd, mjt-owl-alt-syslog-timestamp,
owl-tmpfile, owl-alt-sanitize-env, owl-crypt-wb, alt-libio-bound.

* Tue Aug 14 2012 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl20
- Corrected the processing of '\x80' characters in crypt_freesec.c.  This is
the issue known as CVE-2012-2143 in other projects using the FreeSec code, but
luckily in Owl we've been using this code only for the "extended" hashes
(continuing to use glibc's UFC-crypt for "traditional" ones), and these were
only affected in terms of compatibility (with BSD/OS and certain other
implementations), but not security.
- Moved __libc_enable_secure from GLIBC_PRIVATE to GLIBC_2.0 like it's been
done in ALT Linux.  Technically, __libc_enable_secure has always been a valid
interface for use by other packages on Owl.

* Mon Jul 23 2012 Vasiliy Kulikov <segoon-at-owl.openwall.com> 2.3.6-owl19
- Fixed build failure under binutils >= 2.21.

* Sat Feb 18 2012 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl18
- Set BUILD_LOCALES_UTF8 to 1.

* Thu Oct 20 2011 Vasiliy Kulikov <segoon-at-owl.openwall.com> 2.3.6-owl17
- Fixed build failure and segfault in __sincos() with gcc >= 4.3.

* Sun Oct 09 2011 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl16
- Excluded the zoneinfo files (now part of tzdata package).

* Sat Jul 16 2011 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl15
- Revised the recent changes to crypt_blowfish, including based on feedback
from Ludwig Nussel (thanks!)

* Wed Jul 06 2011 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl14
- In crypt_blowfish, support "$2y$" to refer to the correct algorithm (same as
"$2a$" in OpenBSD), but with "$2a$" deviate from the correct algorithm when
necessary to prevent easy collisions with multiple hashes produced by the sign
extension buggy algorithm.

* Tue Jun 21 2011 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl13
- crypt_blowfish 1.1, correcting the sign extension bug with 8-bit characters
in passwords.

* Mon Oct 18 2010 Dmitry V. Levin <ldv-at-owl.openwall.com> 2.3.6-owl12
- Build glibc without NDEBUG.  Disabling of assertion checks does not
provide significant performance advantage, but it may expose some security
problems.  Those asserts, which NDEBUG removes, might in fact reduce the
impact of the surrounding code not matching the programmers' intent and
expectations.  Proposed by Solar Designer.

* Sun Oct 03 2010 Vasiliy Kulikov <segoon-at-owl.openwall.com> 2.3.6-owl11
- Fixed build with binutils 2.20.x.

* Tue Mar 30 2010 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl10
- Added atomic_write_barrier() before setting the "initialized" flag in
crypt/crypt_util.c: __init_des_r() (upstream code), as well as in
crypt/wrapper.c: _crypt_extended_init_r() (Owl-specific instance of the
same approach).  The __init_des_r() issue was reported upstream:
http://sourceware.org/bugzilla/show_bug.cgi?id=11449

* Sat Feb 20 2010 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl9
- Corrected the sanity check of the "setting" string in _crypt_blowfish_rn() to
reject iteration counts encoded as 36 through 39.  Previously, these would be
misinterpreted as being the same as 04 through 07.  This was reported to us by
Joey Smith.
- Added .section .note.GNU-stack to crypt_blowfish's x86.S.
- Enhanced crypt_freesec.c to detect and reject invalid "setting" strings.

* Thu Feb 11 2010 Dmitry V. Levin <ldv-at-owl.openwall.com> 2.3.6-owl8
- Switched from linuxthreads to NPTL.
- Optimized res_randomid patch.

* Thu Jul 17 2008 Dmitry V. Levin <ldv-at-owl.openwall.com> 2.3.6-owl7
- Made crypt_blowfish buildable by modern gcc compilers by moving
fcrypt weak alias definition from crypt-entry.c to wrapper.c file.

* Sat May 27 2006 Dmitry V. Levin <ldv-at-owl.openwall.com> 2.3.6-owl6
- Backported configure fix: compile source test files with -fPIC for -shared.
- Backported linuxthreads x86-64 asm syntax corrections.
- Backported ctermid declaration fix.
- Backported upstream patch to fix build with new GNU assembler.
- Applied upstream linuxthreads ix86 TLS fix.
- Fixed ldd error reporting on multilib platforms like x86-64.
- Fixed "ldd -u".

* Tue May 23 2006 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl5
- In crypt_blowfish, enable BF_SCALE on x86-64 for better performance.

* Fri Feb 03 2006 Dmitry V. Levin <ldv-at-owl.openwall.com> 2.3.6-owl4
- Marked /etc/ld.so.conf with %%config(noreplace) flag.
- Dropped old ChangeLog files.

* Mon Jan 02 2006 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl3
- Corrected a bug in the way salts for extended DES-based and for MD5-based
hashes are generated; thanks to Marko Kreen for discovering this.

* Tue Dec 20 2005 Solar Designer <solar-at-owl.openwall.com> 2.3.6-owl2
- Imported a patch from Gentoo (re-generated from glibc234-alpha-xstat.patch)
to re-introduce support for building on Alpha with pre-2.6.4 kernel headers.

* Wed Nov 09 2005 Dmitry V. Levin <ldv-at-owl.openwall.com> 2.3.6-owl1
- Updated to 2.3.6.

* Mon May 23 2005 Solar Designer <solar-at-owl.openwall.com> 2.3.5-owl5
- Even more changes to the sanitize-env patch: corrected the way
__libc_enable_secure is set in __libc_init_secure() if still undecided at
that point, provide safe defaults for __libc_enable_secure and
__libc_security_mask in sysdeps/generic/dl-sysdep.c.

* Tue May 17 2005 Dmitry V. Levin <ldv-at-owl.openwall.com> 2.3.5-owl4
- Further changes to the sanitize-env patch: left
__libc_enable_secure a boolean variable; instead, introduced an
internal bitmask, __libc_security_mask.

* Mon May 16 2005 Solar Designer <solar-at-owl.openwall.com> 2.3.5-owl3
- Further changes to the sanitize-env patch: be safe in case the
kernel passes multiple instances of AT_*ID.

* Sun May 15 2005 Dmitry V. Levin <ldv-at-owl.openwall.com> 2.3.5-owl2
- Reworked sanitize-env patch to take into account AT_SECURE value
of the auxiliary vector in addition to AT_*ID values.
- Removed unneeded __locale_getenv() function which was introduced
in 2.3.3.2004061600-owl1.

* Fri May 13 2005 Dmitry V. Levin <ldv-at-owl.openwall.com> 2.3.5-owl1
- Updated to 2.3.5 with changes from glibc-2_3-branch snapshot 20050427.
- Enabled GNU Libidn add-on.
- Updated patches which were imported from ALT.
- Imported SuSE patch which adds -a option to getconf utility.
- Disabled packaging of the obsolete pt_chown helper.
- Corrected info files installation.

* Sat Apr 02 2005 Solar Designer <solar-at-owl.openwall.com> 2.3.3.2004061600-owl6
- Corrected the permissions on /etc/ld.so.conf.d.

* Sun Mar 06 2005 Solar Designer <solar-at-owl.openwall.com> 2.3.3.2004061600-owl5
- Use UTC for our default timezone, Factory is just too ugly ("Local time
zone must be set--see zic manual page" - hardly an informative message for
an end-user - and it comes up while booting off the CD).

* Thu Mar 03 2005 Solar Designer <solar-at-owl.openwall.com> 2.3.3.2004061600-owl4
- Place strlc*() into libc_nonshared.a such that no programs become dependent
on the presence of these extensions in the shared library.
- Added the strlcpy(3) and strlcat(3) man pages.

* Tue Feb 22 2005 Solar Designer <solar-at-owl.openwall.com> 2.3.3.2004061600-owl3
- crypt_blowfish-0.4.7: crypt(3) man page updates.

* Thu Jan 20 2005 Solar Designer <solar-at-owl.openwall.com> 2.3.3.2004061600-owl2
- Many post-update corrections.

* Sun Jan 09 2005 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.3.2004061600-owl1
- Updated to CVS version 2.3.3 (2004061600).
- Spec file was revised and reworked.
- Imported a bunch of patches from ALT Linux.
- Owl patches were revised and regenerated against new version (if necessary).
- Dropped realpath-comments patch (this functionality is implemented).
- Added tmp-scripts patch to deal with tmp file handling issues in the scripts.
- sanitize-env patch was revised and reworked to embrace all issues it has
to deal with.
- Added BUILD_LOCALES and BUILD_LOCALES_UTF8 macros to control building of
locales. BUILD_LOCALES support is incomplete yet, we will divide our glibc
into functional sub-packages soon and generation of locales package will be
controled through BUILD_LOCALES macro.
- Added rpcgen-cpp patch to avoid hardcoding of path to cpp binary. This
patch also replaces execv() to execvp() to search for cpp binary in PATH.
- Cleaned up the spec.

* Wed Dec 25 2004 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.2-owl3
- Fixed compat-fake's provides to deal with Owl 1.1 release upgrades
- Fixed a bug with creating buildtree using %_target_cpu, but accessing it
using RPM_ARCH variable. Thanks goes to Piotr Janiec, who had pointed and
fixed this issue.

* Wed Dec 08 2004 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.2-owl2
- Fixed <sys/quota.h> types (we were using types from linux/types.h instead
of sys/types). Thanks goes to Sergio <sergio at openwall.com>.

* Tue Nov 02 2004 Solar Designer <solar-at-owl.openwall.com> 2.3.2-owl1
- Corrected the -compat-fake sub-package description.
- Set Release to -owl1 such that we can make it public, then proceed with
further corrections for whatever we've broken with the big update.

* Thu Sep 30 2004 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.2-owl0.8
- Added compat-fake sub-package to help upgrade procedure

* Sat Mar 20 2004 Solar Designer <solar-at-owl.openwall.com> 2.3.2-owl0.7
- Corrections to BUILD_PROFILE support.

* Wed Mar 10 2004 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.2-owl0.6
- Moved big rh9 patch to the sources
- Split glibc utility programs into glibc-utils subpackage

* Tue Mar 09 2004 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.2-owl0.5
- Updated patch set for 2.3.2 version

* Thu Mar 04 2004 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.2-owl0.4
- Spec clean up, added documentation

* Mon Mar 01 2004 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.2-owl0.3
- Prepared spec for FHS 2.2

* Thu Feb 24 2004 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.2-owl0.2
- Cleaned up spec for building under "stage4" environment.

* Thu Feb 19 2004 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.2-owl0.1
- Regenerated crypt_blowfish patch against this version of glibc

* Mon Feb 16 2004 (GalaxyMaster) <galaxy-at-owl.openwall.com> 2.3.2-owl0
- Updated to the new version - 2.3.2 (official release); This cannot be used
as primary glibc on system yet due to missing crypt_blowfish.

* Mon Dec 08 2003 Solar Designer <solar-at-owl.openwall.com> 2.1.3-owl38
- Sanity check the forward and backward chunk pointers in dlmalloc's
unlink() macro, thanks to Stefan Esser for the idea.

* Sun Dec 07 2003 Solar Designer <solar-at-owl.openwall.com> 2.1.3-owl37
- Allow tmpfile(3) to use $TMPDIR, thanks to the report and patch by
(GalaxyMaster).  Certain other implementations are known to do the same.

* Wed Oct 29 2003 Solar Designer <solar-at-owl.openwall.com> 2.1.3-owl36
- Added "Provides: glibc-crypt_blowfish-devel" tag to -devel subpackage.
- Dropped the obsolete "Provides: glibc <= 2.1.3-19owl" tag which was
needed during our transition to the new Release numbering scheme.

* Sat Aug 02 2003 Solar Designer <solar-at-owl.openwall.com> 2.1.3-owl35
- Back-ported a fix from glibc CVS to pass the high and low 32 bits of
file offsets into ftruncate64, truncate64, pread64, and pwrite64
syscalls under the correct endianness.  Of the architectures we support
currently, this only makes a difference for SPARC.  The MIPS-specific
bits of this fix are intentionally not included (we'll probably update
glibc earlier than we might possibly support it).

* Sat Jun 28 2003 Solar Designer <solar-at-owl.openwall.com> 2.1.3-owl34
- Corrected the comments in stdlib.h for canonicalize_file_name() and
realpath() to not describe behavior that is not actually implemented.

* Sun Jun 22 2003 Solar Designer <solar-at-owl.openwall.com> 2.1.3-owl33
- Back-ported a fix from glibc CVS to relax the mutex ownership checks
in pthread_cond_wait(3) and related functions.

* Sat Jun 21 2003 Solar Designer <solar-at-owl.openwall.com> 2.1.3-owl32
- Applied a fix by Dmitry V. Levin to call openlog_internal() with a
NULL ident instead of with LogTag to not cause possible deallocation
of LogTagDynamic.

* Fri May 23 2003 Solar Designer <solar-at-owl.openwall.com> 2.1.3-owl31
- Moved /etc/nsswitch.conf from glibc to owl-etc package.

* Sun Mar 23 2003 Solar Designer <solar-at-owl.openwall.com> 2.1.3-owl30
- Included Red Hat's back-port of the Sun RPC XDR integer overflow fixes
from glibc CVS; the fixes are by Paul Eggert and Roland McGrath, and the
xdrmem_getbytes() integer overflow has been discovered by Riley Hassell
of eEye Digital Security.

* Fri Nov 08 2002 Solar Designer <solar-at-owl.openwall.com>
- Made the x86 assembly code in crypt_blowfish reentrant (this time for
real), added a test for proper operation with multiple threads, made
crypt_blowfish more careful about overwriting sensitive data.
- Cleaned up the default /etc/nsswitch.conf file.  Now it refers to
nsswitch.conf(5) for more information, uses the proper terms instead of
calling everything an "entry" (now we use "databases", name "services",
and "entries" being looked up via NSS), and lists "tcb" among possible
name services and provides an example of its use.

* Tue Oct 01 2002 Solar Designer <solar-at-owl.openwall.com>
- Avoid read buffer overruns in glibc itself and applications that
naively assume the length returned by res_* is always less than or equal
to the answer buffer size (CERT VU#738331, CVE CAN-2002-1146), by
truncating the answer in res_send(3); the patch is by Olaf Kirch of SuSE.
- Avoid some potential reads beyond end of undersized DNS responses by
making sure they're at least HFIXEDSZ+QFIXEDSZ in size; pointed out by
Dmitry V. Levin of ALT Linux.

* Mon Aug 19 2002 Michail Litvak <mci-at-owl.openwall.com>
- Deal with info dir entries such that the menu looks pretty.

* Tue Aug 06 2002 Solar Designer <solar-at-owl.openwall.com>
- Updated the recent calloc(3) patch to conform to POSIX-2001 wrt the
behavior on elsize == 0.  Pointed out by Sebastian Krahmer of SuSE.

* Sun Aug 04 2002 Solar Designer <solar-at-owl.openwall.com>
- Made the FreeSec code reentrant, adjusted crypt*(3) wrappers and the
manual page accordingly.

* Thu Aug 01 2002 Solar Designer <solar-at-owl.openwall.com>
- Patched two potential integer overflows (and thus buffer overflows) in
calloc(3) and xdr_array (the latter discovered by ISS X-Force).

* Fri Jul 05 2002 Solar Designer <solar-at-owl.openwall.com>
- Added the patch by NISHIMURA Daisuke and Tomohiro 'Tomo-p' KATO of
Vine Linux to fix the DNS resolver buffer overflows affecting both host
and net lookups in the glibc-compat code that is used by binaries built
against glibc 2.0:
http://sources.redhat.com/ml/bug-glibc/2002-07/msg00119.html

* Thu Jul 04 2002 Solar Designer <solar-at-owl.openwall.com>
- Back-ported the fix to buffer overflow in resolv/nss_dns/dns-network.c
affecting getnetby{addr,name}{,_r}(3) when "dns" is listed on "networks"
line in /etc/nsswitch.conf (which is not the default).
- Improved the code used to produce unpredictable DNS query IDs to make
it generate different sequences of IDs in forked processes (problem
noted by Jarno Huuskonen), conserve the kernel's randomness pool (based
on feedback from Michael Tokarev), and properly reseed when chrooted.

* Thu Jul 04 2002 Michail Litvak <mci-at-owl.openwall.com>
- patch to build with new texinfo

* Wed Jun 12 2002 Solar Designer <solar-at-owl.openwall.com>
- ldd(1) will no longer try to invoke programs directly, even when it
seems like that would work.  The dynamic linker will be invoked as a
program instead.  This makes a difference when the program is SGID and
is being ldd'ed by root.  If the program was executed directly, glibc
would detect its SGID status and drop LD_* variables, resulting in the
program being actually started rather than ldd'ed.  Thanks to Dmitry
V. Levin of ALT Linux for suggesting this solution.
- Use ctime_r() instead of strftime_r() in syslog(3) so that month names
will not depend on current locale settings.  The patch is originally by
Michael Tokarev, with modifications to apply to our glibc.
- glibcbug: use mktemp(1) in a fail-close way, let it use $TMPDIR, default
to vitmp(1) for the editor.
- crypt_blowfish-0.4.3 (documentation updates, a check to produce better
code for PA-RISC).

* Mon Feb 04 2002 Michail Litvak <mci-at-owl.openwall.com>
- Enforce our new spec file conventions.

* Fri Dec 14 2001 Solar Designer <solar-at-owl.openwall.com>
- Back-ported a glob(3) buffer overflow fix from the CVS; the bug has been
discovered and an initial patch produced by Flavio Veloso of Magnux.
- Applied fixes to vasprintf(3) (thus affecting asprintf(3) as well) to
make it behave on errors, changed the semantics to match Todd Miller's
implementation on *BSD, fixed uses of [v]asprintf(3) in glibc itself to
handle possible errors.  Thanks to Dmitry V. Levin of ALT Linux for
discovering and looking into these issues.
- Updated to crypt_blowfish-0.4.2 (more man page fixes).

* Thu Nov 08 2001 Solar Designer <solar-at-owl.openwall.com>
- If syslog(3) is called by a SUID/SGID program without a preceding call to
openlog(3), don't blindly trust __progname for the syslog ident.

* Fri Jul 06 2001 Solar Designer <solar-at-owl.openwall.com>
- Corrected the declaration of struct dqstats in <sys/quota.h>.

* Wed Jun 13 2001 Solar Designer <solar-at-owl.openwall.com>
- Back-ported a patch from the CVS to handle unaligned relocations on Alpha.
References:
http://bugs.debian.org/43401
http://www.alphalinux.org/archives/debian-alpha/February2000/0183.html
http://www.alphalinux.org/archives/debian-alpha/February2000/0197.html
http://gcc.gnu.org/ml/gcc/1999-07n/msg00968.html
http://gcc.gnu.org/ml/gcc/1999-07n/msg01041.html

* Sun Jun 03 2001 Solar Designer <solar-at-owl.openwall.com>
- Sync the fts(3) routines with current OpenBSD and FreeBSD; this is
triggered by Nick Cleaton's report of yet another FTS vulnerability
to FreeBSD, and a discussion with Kris Kennaway and Todd Miller.  It
should no longer be possible to trick FTS into leaving the intended
directory hierarchy, but DoS attacks on FTS itself remain possible.
- Updated to crypt_blowfish-0.4.1 (man page fixes).

* Thu May 10 2001 Solar Designer <solar-at-owl.openwall.com>
- Updated to crypt_blowfish-0.4 (release).

* Fri May 04 2001 Solar Designer <solar-at-owl.openwall.com>
- Updated to crypt_blowfish-0.3.9, which adds crypt_ra, crypt_gensalt_ra
and an up-to-date crypt(3) man page.

* Sat Apr 07 2001 Solar Designer <solar-at-owl.openwall.com>
- Force known control characters for iscntrl(3) (in localedef and C locale).

* Thu Jan 11 2001 Solar Designer <solar-at-owl.openwall.com>
- Sanitize the environment in a paranoid way (this was meant to be delayed
until we add a configuration file, but well...).

* Wed Jan 10 2001 Solar Designer <solar-at-owl.openwall.com>
- Included several critical dynamic linker security fixes from the CVS.

* Tue Jan 02 2001 Solar Designer <solar-at-owl.openwall.com>
- Back-ported the mktemp, tempnam, tmpnam, and tmpnam_r link_warning's.

* Fri Nov 17 2000 Solar Designer <solar-at-owl.openwall.com>
- 'ASFLAGS-.os += -Wa,-Av8plusa' for sparcv9.

* Thu Sep 07 2000 Solar Designer <solar-at-owl.openwall.com>
- Added optflags_lib support and _target_platform to configure.

* Fri Sep 01 2000 Solar Designer <solar-at-owl.openwall.com>
- One more security fix (locale once again) from the CVS version.
- Fixed a bug in crypt_gensalt*() reported by Michael Tokarev.

* Fri Aug 25 2000 Solar Designer <solar-at-owl.openwall.com>
- Back-ported 3 security-related fixes from the CVS version.

* Sun Aug 06 2000 Solar Designer <solar-at-owl.openwall.com>
- Added FreeSec (as a patch) to support extended/new-style/BSDI password
hashes in crypt(3) (but not in the reentrant versions; this is a hack).
- The building of profiling libraries is now optional and disabled by
default.

* Fri Jul 14 2000 Alexandr D. Kanevskiy <kad-at-owl.openwall.com>
- import syslog fix from RH
- import time fix from RH
- import timezone fixes from RH
- import ldd patch to handle non-executable shared objects. (mdk)
- import ucontext.h patch from mdk

* Wed Jul 12 2000 Alexandr D. Kanevskiy <kad-at-owl.openwall.com>
- paths patch from RH
- import libNoVersion from RH
- import xdr_ypall patch (RH bug id #249)
- import linuxthreads patches from RH
- import nis malloc fixes from RH
- import some little fixes from RH
- import cp1251 locales from BCL

* Sun Jun 18 2000 Solar Designer <solar-at-owl.openwall.com>
- import this spec from RH, and make it use the original glibc 2.1.3
code with Owl patches only; libNoVersion and other RH hacks may be added
at a later stage.

Powered by blists - more mailing lists

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ