diff options
Diffstat (limited to 'core')
56 files changed, 2359 insertions, 1333 deletions
diff --git a/core/btrfs-progs/PKGBUILD b/core/btrfs-progs/PKGBUILD index b55347e34..d811d7f49 100644 --- a/core/btrfs-progs/PKGBUILD +++ b/core/btrfs-progs/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 186631 2013-05-30 10:13:30Z tomegun $ +# $Id: PKGBUILD 195489 2013-10-01 11:32:32Z tomegun $ # Maintainer: Tom Gundersen <teg@jklm.no> # Contributor: Tobias Powalowski <tpowa@archlinux.org> pkgname=btrfs-progs -pkgver=0.20rc1.2 +pkgver=0.20rc1.3 pkgrel=1 pkgdesc="btrfs filesystem utilities" arch=(i686 x86_64 mips64el) @@ -14,7 +14,7 @@ replaces=('btrfs-progs-unstable') conflicts=('btrfs-progs-unstable') provides=('btrfs-progs-unstable') license=('GPL2') -source=("git://git.kernel.org/pub/scm/linux/kernel/git/mason/${pkgname}.git#commit=7854c8b667" +source=("git://git.kernel.org/pub/scm/linux/kernel/git/mason/${pkgname}.git#commit=194aa4a1bd6447bb545286d0bcb0b0be8204d79f" initcpio-install-btrfs initcpio-hook-btrfs) install=btrfs-progs.install @@ -23,13 +23,14 @@ options=(!staticlibs) build() { cd $pkgname make CFLAGS="$CFLAGS" - + make CFLAGS="$CFLAGS" btrfs-select-super } package() { cd $pkgname make prefix=$pkgdir/usr install + install -Dm755 btrfs-select-super $pkgdir/usr/bin # fix manpage mkdir -p $pkgdir/usr/share/ diff --git a/core/cryptsetup/PKGBUILD b/core/cryptsetup/PKGBUILD index ad10778b7..e86517e26 100644 --- a/core/cryptsetup/PKGBUILD +++ b/core/cryptsetup/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 193404 2013-08-19 17:24:16Z thomas $ +# $Id: PKGBUILD 195910 2013-10-05 07:30:48Z thomas $ # Maintainer: Thomas Bächler <thomas@archlinux.org> pkgname=cryptsetup pkgver=1.6.2 -pkgrel=1 +pkgrel=2 pkgdesc="Userspace setup tool for transparent encryption of block devices using dm-crypt" arch=(i686 x86_64 'mips64el') license=('GPL') @@ -13,11 +13,13 @@ options=('!libtool' '!emptydirs') source=(http://cryptsetup.googlecode.com/files/${pkgname}-${pkgver}.tar.bz2 http://cryptsetup.googlecode.com/files/${pkgname}-${pkgver}.tar.bz2.asc encrypt_hook - encrypt_install) + encrypt_install + sd-encrypt) md5sums=('cd834da49fbe92dd66df02cc5c61280f' 'SKIP' 'c279d86d6dc18322c054d2272ebb9e90' - '21c45f9cab3e0b5165f68358884fbd0f') + '21c45f9cab3e0b5165f68358884fbd0f' + '6cf7e170ecd13e42fe829209628fdb4d') build() { cd "${srcdir}"/$pkgname-${pkgver} @@ -31,6 +33,7 @@ package() { # install hook install -D -m644 "${srcdir}"/encrypt_hook "${pkgdir}"/usr/lib/initcpio/hooks/encrypt install -D -m644 "${srcdir}"/encrypt_install "${pkgdir}"/usr/lib/initcpio/install/encrypt + install -D -m644 "${srcdir}"/sd-encrypt "${pkgdir}"/usr/lib/initcpio/install/sd-encrypt # usrmove cd "$pkgdir"/usr diff --git a/core/cryptsetup/sd-encrypt b/core/cryptsetup/sd-encrypt new file mode 100644 index 000000000..c18fd2f24 --- /dev/null +++ b/core/cryptsetup/sd-encrypt @@ -0,0 +1,42 @@ +#!/bin/bash + +build() { + local mod + + add_module dm-crypt + if [[ $CRYPTO_MODULES ]]; then + for mod in $CRYPTO_MODULES; do + add_module "$mod" + done + else + add_all_modules '/crypto/' + fi + + add_binary "dmsetup" + add_file "/usr/lib/udev/rules.d/10-dm.rules" + add_file "/usr/lib/udev/rules.d/13-dm-disk.rules" + add_file "/usr/lib/udev/rules.d/95-dm-notify.rules" + add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules" + + add_systemd_unit cryptsetup.target + add_binary /usr/lib/systemd/system-generators/systemd-cryptsetup-generator + add_binary /usr/lib/systemd/systemd-cryptsetup + + add_systemd_unit systemd-ask-password-console.path + add_systemd_unit systemd-ask-password-console.service + + [[ -f /etc/crypttab.initramfs ]] && add_file /etc/crypttab.initramfs /etc/crypttab +} + +help() { + cat <<HELPEOF +This hook allows for an encrypted root device with systemd initramfs. + +See the manpage of systemd-cryptsetup-generator(8) for available kernel +command line options. Alternatively, if the file /etc/crypttab.initramfs +exists, it will be added to the initramfs as /etc/crypttab. See the +crypttab(5) manpage for more information on crypttab syntax. +HELPEOF +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/core/curl/0001-curl_multi_remove_handle-allow-multiple-removes.patch b/core/curl/0001-curl_multi_remove_handle-allow-multiple-removes.patch new file mode 100644 index 000000000..73b23ea12 --- /dev/null +++ b/core/curl/0001-curl_multi_remove_handle-allow-multiple-removes.patch @@ -0,0 +1,29 @@ +From 84f3b3dd448399f9548468676e1bd1475dba8de5 Mon Sep 17 00:00:00 2001 +From: Daniel Stenberg <daniel@haxx.se> +Date: Thu, 29 Aug 2013 22:08:01 +0200 +Subject: [PATCH] curl_multi_remove_handle: allow multiple removes + +When removing an already removed handle, avoid that to ruin the +internals and just return OK instead. +--- + lib/multi.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/multi.c b/lib/multi.c +index fb495e0..e723a3e 100644 +--- a/lib/multi.c ++++ b/lib/multi.c +@@ -483,6 +483,10 @@ CURLMcode curl_multi_remove_handle(CURLM *multi_handle, + if(!GOOD_EASY_HANDLE(curl_handle)) + return CURLM_BAD_EASY_HANDLE; + ++ /* Prevent users from trying to remove same easy handle more than once */ ++ if(!data->multi) ++ return CURLM_OK; /* it is already removed so let's say it is fine! */ ++ + if(easy) { + bool premature = (data->mstate < CURLM_STATE_COMPLETED) ? TRUE : FALSE; + bool easy_owns_conn = (data->easy_conn && +-- +1.8.4 + diff --git a/core/curl/PKGBUILD b/core/curl/PKGBUILD index 15de2cadf..af22269df 100644 --- a/core/curl/PKGBUILD +++ b/core/curl/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 193070 2013-08-15 13:17:43Z dreisner $ +# $Id: PKGBUILD 193944 2013-09-07 15:30:07Z dreisner $ # Maintainer: Dave Reisner <dreisner@archlinux.org> # Contributor: Angel Velasquez <angvp@archlinux.org> # Contributor: Eric Belanger <eric@archlinux.org> @@ -7,7 +7,7 @@ pkgname=curl pkgver=7.32.0 -pkgrel=1 +pkgrel=2 pkgdesc="An URL retrieval utility and library" arch=('i686' 'x86_64' 'mips64el') url="http://curl.haxx.se" @@ -16,11 +16,19 @@ depends=('ca-certificates' 'libssh2' 'openssl' 'zlib') provides=('libcurl.so') options=('!libtool') source=("http://curl.haxx.se/download/$pkgname-$pkgver.tar.gz"{,.asc} + 0001-curl_multi_remove_handle-allow-multiple-removes.patch curlbuild.h) md5sums=('f77cf3cb59cf2bfe686b80338323fd40' 'SKIP' + '589a2ccdf90e198fca398809e9d16128' '751bd433ede935c8fae727377625a8ae') +prepare() { + cd "$pkgname-$pkgver" + + patch -Np1 <"$srcdir"/0001-curl_multi_remove_handle-allow-multiple-removes.patch +} + build() { cd "$pkgname-$pkgver" diff --git a/core/db/PKGBUILD b/core/db/PKGBUILD index 5e10221b5..0d5a9dc20 100644 --- a/core/db/PKGBUILD +++ b/core/db/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 160636 2012-06-02 22:25:49Z allan $ +# $Id: PKGBUILD 195826 2013-10-01 16:41:14Z bpiotrowski $ # Maintainer: Stéphane Gaudreault <stephane@archlinux.org> # Contributor: Allan McRae <allan@archlinux.org> # Contributor: Andreas Radke <andyrtr@archlinux.org> pkgname=db pkgver=5.3.21 -pkgrel=1 +pkgrel=2 pkgdesc="The Berkeley DB embedded database system" arch=('i686' 'x86_64' 'mips64el') url="http://www.oracle.com/technology/software/products/berkeley-db/index.html" diff --git a/core/dbus/PKGBUILD b/core/dbus/PKGBUILD index 4c49dc4f1..d61465f41 100644 --- a/core/dbus/PKGBUILD +++ b/core/dbus/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 188480 2013-06-14 20:26:05Z tomegun $ +# $Id: PKGBUILD 194433 2013-09-16 10:42:42Z jgc $ # Maintainer: Tom Gundersen <teg@jklm.no> # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: Link Dupont <link@subpop.net> # pkgname=dbus -pkgver=1.6.12 +pkgver=1.6.14 pkgrel=1 pkgdesc="Freedesktop.org message bus system" url="http://www.freedesktop.org/Software/dbus" @@ -48,6 +48,6 @@ package(){ install -Dm644 COPYING "$pkgdir/usr/share/licenses/dbus/COPYING" } -md5sums=('a70edc50524f258eaf5c9a9994ed8748' +md5sums=('1c22aebdf952e92908800f1ec2aeb0c4' '3314d727fa57fc443fce25b5cbeebbcc' 'd8a1bd529b3ddca671ee1a695a143db9') diff --git a/core/dialog/PKGBUILD b/core/dialog/PKGBUILD index d27f184be..c0322bebd 100644 --- a/core/dialog/PKGBUILD +++ b/core/dialog/PKGBUILD @@ -1,19 +1,20 @@ -# $Id: PKGBUILD 187873 2013-06-07 13:39:39Z foutrelis $ +# $Id: PKGBUILD 195853 2013-10-02 13:25:41Z foutrelis $ # Maintainer: Evangelos Foutras <evangelos@foutrelis.com> # Contributor: Stéphane Gaudreault <stephane@archlinux.org> # Contributor: Allan McRae <allan@archlinux.org> # Contributor: Andreas Radke <andyrtr@archlinux.org> pkgname=dialog -pkgver=1.2_20130523 -pkgrel=2 +pkgver=1.2_20131001 +pkgrel=1 pkgdesc="A tool to display dialog boxes from shell scripts" arch=('i686' 'x86_64' 'mips64el') url="http://invisible-island.net/dialog/" license=('LGPL2.1') depends=('ncurses') +options=('staticlibs') source=(ftp://invisible-island.net/$pkgname/$pkgname-${pkgver/_/-}.tgz) -sha256sums=('c8d114b7698022bcbd6c88f3c0b2296b0e846c60c5ed6bd28f86dd72b94fd36d') +sha256sums=('b22215d56dfbfa7f025092759e8f144b17321e14829b2a273f68d745a1f0dca5') build() { cd "$srcdir/$pkgname-${pkgver/_/-}" diff --git a/core/efibootmgr/PKGBUILD b/core/efibootmgr/PKGBUILD index 2a42dea3a..28cb02ea6 100755 --- a/core/efibootmgr/PKGBUILD +++ b/core/efibootmgr/PKGBUILD @@ -1,49 +1,59 @@ -# $Id: PKGBUILD 188652 2013-06-17 10:52:28Z tpowa $ +# $Id: PKGBUILD 194435 2013-09-16 12:11:58Z tpowa $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> -# Contributor : Murtuza Akhtari <inxsible at gmail dot com> -# Contributor: Keshav P R <skodabenz at rocketmail dot com> +# Contributor: Murtuza Akhtari <inxsible at gmail dot com> +# Contributor: Keshav Padram Amburay <(the.ridikulus.rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> -pkgname=efibootmgr -pkgver=0.6.0 -pkgrel=3 -pkgdesc="Tool to modify UEFI Firmware Boot Manager Variables." -arch=('i686' 'x86_64') -url="http://linux.dell.com/efibootmgr/" +pkgname="efibootmgr" + +_gitroot="git://github.com/vathpela/efibootmgr.git" +_gitname="${pkgname}-pjones" +_gitbranch="libefivars" + +pkgver=0.6.0.138.1132342 +pkgrel=1 +pkgdesc="Tool to modify UEFI Firmware Boot Manager Variables" +arch=('x86_64' 'i686') +url="https://github.com/vathpela/efibootmgr" license=('GPL2') -depends=('zlib' 'pciutils') -makedepends=() -provides=() -options=(strip purge docs zipman !emptydirs) +makedepends=('git') +depends=('pciutils' 'efivar' 'zlib') +options=('strip' 'zipman' '!emptydirs' '!libtool') -source=("http://linux.dell.com/efibootmgr/permalink/${pkgname}-${pkgver}.tar.gz" - "efibootmgr-tilt_slashes-func.patch" -) +source=("${_gitname}::git+${_gitroot}#branch=${_gitbranch}") +sha1sums=('SKIP') -build () { - rm -rf ${srcdir}/efibootmgr-${pkgver}_build/ || true +pkgver() { + cd "${srcdir}/${_gitname}/" - cp -r ${srcdir}/efibootmgr-${pkgver} ${srcdir}/efibootmgr-${pkgver}_build + _RELEASE_MAJOR="$(grep 'RELEASE_MAJOR' "${srcdir}/${_gitname}/Makefile" | head -1 | sed -e 's|RELEASE_MAJOR := ||g')" + _RELEASE_MINOR="$(grep 'RELEASE_MINOR' "${srcdir}/${_gitname}/Makefile" | head -1 | sed -e 's|RELEASE_MINOR := ||g')" + _RELEASE_SUBLEVEL="$(grep 'RELEASE_SUBLEVEL' "${srcdir}/${_gitname}/Makefile" | head -1 | sed -e 's|RELEASE_SUBLEVEL := ||g')" - cd ${srcdir}/efibootmgr-${pkgver}_build/ - patch -Np1 -i ${srcdir}/efibootmgr-tilt_slashes-func.patch - echo + _ACTUAL_VER="$(echo ${_RELEASE_MAJOR}.${_RELEASE_MINOR}.${_RELEASE_SUBLEVEL} | sed 's| ||g')" - CFLAGS= make + echo "${_ACTUAL_VER}.$(git rev-list --count HEAD).$(git rev-parse --short HEAD)" +} + +build() { + + rm -rf "${srcdir}/${_gitname}_build/" || true + cp -r "${srcdir}/${_gitname}" "${srcdir}/${_gitname}_build" + + cd "${srcdir}/${_gitname}_build/" + + make EXTRA_CFLAGS="-Os" echo } - package() { - mkdir -p ${pkgdir}/usr/bin/ - mkdir -p ${pkgdir}/usr/share/man/man8/ + cd "${srcdir}/${_gitname}_build/" - cd ${srcdir}/efibootmgr-${pkgver}_build/ + install -d "${pkgdir}/usr/bin/" + install -D -m0755 "${srcdir}/${_gitname}_build/src/efibootmgr/efibootmgr" "${pkgdir}/usr/bin/efibootmgr" - install -D -m755 ${srcdir}/efibootmgr-${pkgver}_build/src/efibootmgr/efibootmgr ${pkgdir}/usr/bin/efibootmgr - install -D -m644 ${srcdir}/efibootmgr-${pkgver}_build/src/man/man8/efibootmgr.8 ${pkgdir}/usr/share/man/man8/efibootmgr.8 + install -d "${pkgdir}/usr/share/man/man8/" + install -D -m0644 "${srcdir}/${_gitname}_build/src/man/man8/efibootmgr.8" "${pkgdir}/usr/share/man/man8/efibootmgr.8" } -md5sums=('9e9a31d79e579644de83a14139b66d10' - '3622c0e978cf859cae60803a6b6a0c5e') diff --git a/core/efivar/PKGBUILD b/core/efivar/PKGBUILD new file mode 100644 index 000000000..849868267 --- /dev/null +++ b/core/efivar/PKGBUILD @@ -0,0 +1,64 @@ +# $Id: PKGBUILD 194436 2013-09-16 12:12:17Z tpowa $ +# Maintainer : Tobias Powalowski <tpowa@archlinux.org> +# Contributor : Keshav Padram <(the.ridikulus.rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> + +_gitroot="git://github.com/vathpela/efivar.git" +_gitname="efivar" +_gitbranch="master" + +_pkgname="efivar" +pkgname="${_pkgname}" + +pkgdesc="Library to manipulate EFI variables" +pkgver=0.6 +pkgrel=1 +arch=('x86_64' 'i686') +url="https://github.com/vathpela/efivar" +license=('LGPL2.1') +depends=('popt') +conflicts=('libefivar') +provides=('libefivar') +options=('zipman' 'docs' '!makeflags') + +source=("${_gitname}::git+${_gitroot}#branch=${_gitbranch}") +sha1sums=('SKIP') + +pkgver() { + cd "${srcdir}/${_gitname}/" + echo "$(git describe --tags)" | sed 's|-|\.|g' +} + +build() { + + rm -rf "${srcdir}/${_gitname}_build/" || true + cp -r "${srcdir}/${_gitname}" "${srcdir}/${_gitname}_build" + + cd "${srcdir}/${_gitname}_build/" + + git clean -x -d -f + echo + + unset CFLAGS + unset CPPFLAGS + unset CXXFLAGS + unset LDFLAGS + unset MAKEFLAGS + + sed 's|-rpath=$(TOPDIR)/src/|-rpath=$(libdir)|g' -i "${srcdir}/${_gitname}_build/src/test/Makefile" || true + + make libdir="/usr/lib/" bindir="/usr/bin/" mandir="/usr/share/man/" includedir="/usr/include/" V=1 -j1 + echo + +} + +package() { + + cd "${srcdir}/${_gitname}_build/" + + make -j1 V=1 DESTDIR="${pkgdir}/" libdir="/usr/lib/" bindir="/usr/bin/" mandir="/usr/share/man/" includedir="/usr/include/" install + echo + + install -d "${pkgdir}/usr/bin" + install -D -m0755 "${srcdir}/${_gitname}_build/src/test/tester" "${pkgdir}/usr/bin/efivar-tester" + +} diff --git a/core/fakeroot/PKGBUILD b/core/fakeroot/PKGBUILD index 447c2c22f..254049c41 100644 --- a/core/fakeroot/PKGBUILD +++ b/core/fakeroot/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 186069 2013-05-20 23:10:56Z allan $ +# $Id: PKGBUILD 194710 2013-09-23 00:56:24Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Contributor: Jochem Kossen <j.kossen@home.nl> pkgname=fakeroot -pkgver=1.19 +pkgver=1.20 pkgrel=1 pkgdesc="Gives a fake root environment, useful for building packages as a non-privileged user" arch=('i686' 'x86_64' 'mips64el') @@ -14,7 +14,7 @@ install=fakeroot.install depends=('glibc' 'filesystem' 'sed' 'util-linux' 'sh') options=('!libtool') source=(http://ftp.debian.org/debian/pool/main/f/${pkgname}/${pkgname}_${pkgver}.orig.tar.bz2) -md5sums=('3a00a1264cb31a815552050ef0c2468b') +md5sums=('9777a81d4d1878422447a1d0030c1f9f') build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/core/file/PKGBUILD b/core/file/PKGBUILD index 95acdcdb3..ba6f0439f 100644 --- a/core/file/PKGBUILD +++ b/core/file/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 180851 2013-03-27 01:10:50Z allan $ +# $Id: PKGBUILD 195182 2013-09-26 23:59:54Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Contributor: Andreas Radke <andyrtr@archlinux.org> pkgname=file -pkgver=5.14 +pkgver=5.15 pkgrel=1 pkgdesc="File type identification utility" arch=('i686' 'x86_64' 'mips64el') @@ -13,7 +13,7 @@ url="http://www.darwinsys.com/file/" depends=('glibc' 'zlib') options=('!libtool') source=(ftp://ftp.astron.com/pub/${pkgname}/${pkgname}-${pkgver}.tar.gz) -md5sums=('c26625f1d6773ad4bc5a87c0e315632c') +md5sums=('3f99565532f548d7540912c4642d1ede') build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/core/gdbm/PKGBUILD b/core/gdbm/PKGBUILD index 0e806f3de..71da45002 100644 --- a/core/gdbm/PKGBUILD +++ b/core/gdbm/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 143800 2011-11-29 13:32:53Z stephane $ -# Maintainer: Stéphane Gaudreault <stephane@archlinux.org> +# $Id: PKGBUILD 195488 2013-10-01 06:09:23Z bpiotrowski $ +# Contributor: Stéphane Gaudreault <stephane@archlinux.org> # Contributor: Allan McRae <allan@archlinux.org> # Contributor: judd <jvinet@zeroflux.org> pkgname=gdbm pkgver=1.10 -pkgrel=1.1 +pkgrel=2 pkgdesc="GNU database library" url="http://www.gnu.org/software/gdbm/gdbm.html" license=('GPL') @@ -17,7 +17,8 @@ options=('!libtool' '!makeflags') install=gdbm.install md5sums=('88770493c2559dc80b561293e39d3570' 'ac255b10452005237836cd2d3a470733') -build() { + +prepare() { cd "${srcdir}/${pkgname}-${pkgver}" # Prevent gdbm from storing uninitialized memory content @@ -27,6 +28,10 @@ build() { # https://bugzilla.redhat.com/show_bug.cgi?id=4457 # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=208927 patch -Np1 -i ../gdbm-1.10-zeroheaders.patch +} + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ --mandir=/usr/share/man \ diff --git a/core/glib2/PKGBUILD b/core/glib2/PKGBUILD index 8b3c27845..dbe30c874 100644 --- a/core/glib2/PKGBUILD +++ b/core/glib2/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 193184 2013-08-18 08:13:38Z heftig $ +# $Id: PKGBUILD 196009 2013-10-07 11:50:04Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgbase=glib2 pkgname=(glib2 glib2-docs) -pkgver=2.36.4 +pkgver=2.38.0 pkgrel=1 pkgdesc="Common C routines used by GTK+ and other libs" url="http://www.gtk.org/" @@ -11,13 +11,12 @@ arch=(i686 x86_64 mips64el) makedepends=('pkg-config' 'python2' 'libxslt' 'docbook-xml' 'pcre' 'libffi' 'elfutils') source=(http://ftp.gnome.org/pub/GNOME/sources/glib/${pkgver%.*}/glib-$pkgver.tar.xz revert-warn-glib-compile-schemas.patch) -sha256sums=('f654d2542329012d8475736a165dfbf82fadf3ee940c2e0e6ddd4b2fde5cad7e' +sha256sums=('7513a7de5e814ccb48206340a8773ea523d6a7bf04dc74565de69b899bc2ff32' '049240975cd2f1c88fbe7deb28af14d4ec7d2640495f7ca8980d873bb710cc97') prepare() { cd glib-$pkgver patch -Rp1 -i ../revert-warn-glib-compile-schemas.patch - touch -r NEWS gtk-doc.make } build() { diff --git a/core/glibc/PKGBUILD b/core/glibc/PKGBUILD index c8d7a0bb8..b77a6eaa5 100644 --- a/core/glibc/PKGBUILD +++ b/core/glibc/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 193742 2013-08-30 03:37:09Z allan $ +# $Id: PKGBUILD 195163 2013-09-26 03:20:58Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc @@ -6,7 +6,7 @@ pkgname=glibc pkgver=2.18 -pkgrel=3 +pkgrel=5 pkgdesc="GNU C Library" arch=('i686' 'x86_64' 'mips64el') url="http://www.gnu.org/software/libc" @@ -21,6 +21,9 @@ options=('!strip') install=glibc.install source=(http://ftp.gnu.org/gnu/libc/${pkgname}-${pkgver}.tar.xz{,.sig} glibc-2.18-readdir_r-CVE-2013-4237.patch + glibc-2.18-malloc-corrupt-CVE-2013-4332.patch + glibc-2.18-strcoll-CVE-2012-4412+4424.patch + glibc-2.18-ptr-mangle-CVE-2013-4788.patch glibc-2.18-strstr-hackfix.patch nscd.service nscd.tmpfiles @@ -29,19 +32,32 @@ source=(http://ftp.gnu.org/gnu/libc/${pkgname}-${pkgver}.tar.xz{,.sig} md5sums=('88fbbceafee809e82efd52efa1e3c58f' 'SKIP' '154da6bf5a5248f42a7bf5bf08e01a47' + 'b79561ab9dce900e9bbeaf0d49927c2b' + 'c7264b99d0f7e51922a4d3126182c40a' + '9749ba386b08a8fe53e7ecede9bf2dfb' '4441f6dfe7d75ced1fa75e54dd21d36e' 'd5fab2cd3abea65aa5ae696ea4a47d6b' 'da662ca76e7c8d7efbc7986ab7acea2d' '07ac979b6ab5eeb778d55f041529d623' '476e9113489f93b348b21e144b6a8fcf') - prepare() { cd ${srcdir}/${pkgname}-${pkgver} # upstream commit 91ce4085 patch -p1 -i $srcdir/glibc-2.18-readdir_r-CVE-2013-4237.patch - + + # upstream commits 1159a193, 55e17aad and b73ed247 + patch -p1 -i $srcdir/glibc-2.18-malloc-corrupt-CVE-2013-4332.patch + + # upstream commits 1326ba1a, 141f3a77 and 303e567a + # https://sourceware.org/ml/libc-alpha/2013-08/msg00394.html + # https://sourceware.org/ml/libc-alpha/2013-08/msg00462.html + patch -p1 -i $srcdir/glibc-2.18-strcoll-CVE-2012-4412+4424.patch + + # upstream commits c61b4d41 and 0b1f8e35 + patch -p1 -i $srcdir/glibc-2.18-ptr-mangle-CVE-2013-4788.patch + # hack fix for strstr issues on x86 patch -p1 -i $srcdir/glibc-2.18-strstr-hackfix.patch diff --git a/core/glibc/glibc-2.18-malloc-corrupt-CVE-2013-4332.patch b/core/glibc/glibc-2.18-malloc-corrupt-CVE-2013-4332.patch new file mode 100644 index 000000000..093db86c9 --- /dev/null +++ b/core/glibc/glibc-2.18-malloc-corrupt-CVE-2013-4332.patch @@ -0,0 +1,54 @@ +diff --git a/malloc/malloc.c b/malloc/malloc.c +index dd295f5..7f43ba3 100644 +--- a/malloc/malloc.c ++++ b/malloc/malloc.c +@@ -3082,6 +3082,13 @@ __libc_pvalloc(size_t bytes) + size_t page_mask = GLRO(dl_pagesize) - 1; + size_t rounded_bytes = (bytes + page_mask) & ~(page_mask); + ++ /* Check for overflow. */ ++ if (bytes > SIZE_MAX - 2*pagesz - MINSIZE) ++ { ++ __set_errno (ENOMEM); ++ return 0; ++ } ++ + void *(*hook) (size_t, size_t, const void *) = + force_reg (__memalign_hook); + if (__builtin_expect (hook != NULL, 0)) +diff --git a/malloc/malloc.c b/malloc/malloc.c +index 7f43ba3..3148c5f 100644 +--- a/malloc/malloc.c ++++ b/malloc/malloc.c +@@ -3046,6 +3046,13 @@ __libc_valloc(size_t bytes) + + size_t pagesz = GLRO(dl_pagesize); + ++ /* Check for overflow. */ ++ if (bytes > SIZE_MAX - pagesz - MINSIZE) ++ { ++ __set_errno (ENOMEM); ++ return 0; ++ } ++ + void *(*hook) (size_t, size_t, const void *) = + force_reg (__memalign_hook); + if (__builtin_expect (hook != NULL, 0)) +diff --git a/malloc/malloc.c b/malloc/malloc.c +index 3148c5f..f7718a9 100644 +--- a/malloc/malloc.c ++++ b/malloc/malloc.c +@@ -3015,6 +3015,13 @@ __libc_memalign(size_t alignment, size_t bytes) + /* Otherwise, ensure that it is at least a minimum chunk size */ + if (alignment < MINSIZE) alignment = MINSIZE; + ++ /* Check for overflow. */ ++ if (bytes > SIZE_MAX - alignment - MINSIZE) ++ { ++ __set_errno (ENOMEM); ++ return 0; ++ } ++ + arena_get(ar_ptr, bytes + alignment + MINSIZE); + if(!ar_ptr) + return 0; diff --git a/core/glibc/glibc-2.18-ptr-mangle-CVE-2013-4788.patch b/core/glibc/glibc-2.18-ptr-mangle-CVE-2013-4788.patch new file mode 100644 index 000000000..09a439440 --- /dev/null +++ b/core/glibc/glibc-2.18-ptr-mangle-CVE-2013-4788.patch @@ -0,0 +1,485 @@ +diff --git a/csu/libc-start.c b/csu/libc-start.c +index e5da3ef..c898d06 100644 +--- a/csu/libc-start.c ++++ b/csu/libc-start.c +@@ -37,6 +37,12 @@ extern void __pthread_initialize_minimal (void); + in thread local area. */ + uintptr_t __stack_chk_guard attribute_relro; + # endif ++# ifndef THREAD_SET_POINTER_GUARD ++/* Only exported for architectures that don't store the pointer guard ++ value in thread local area. */ ++uintptr_t __pointer_chk_guard_local ++ attribute_relro attribute_hidden __attribute__ ((nocommon)); ++# endif + #endif + + #ifdef HAVE_PTR_NTHREADS +@@ -195,6 +201,16 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), + # else + __stack_chk_guard = stack_chk_guard; + # endif ++ ++ /* Set up the pointer guard value. */ ++ uintptr_t pointer_chk_guard = _dl_setup_pointer_guard (_dl_random, ++ stack_chk_guard); ++# ifdef THREAD_SET_POINTER_GUARD ++ THREAD_SET_POINTER_GUARD (pointer_chk_guard); ++# else ++ __pointer_chk_guard_local = pointer_chk_guard; ++# endif ++ + #endif + + /* Register the destructor of the dynamic linker if there is any. */ +diff --git a/elf/Makefile b/elf/Makefile +index aaa9534..cb8da93 100644 +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -121,7 +121,8 @@ endif + tests = tst-tls1 tst-tls2 tst-tls9 tst-leaks1 \ + tst-array1 tst-array2 tst-array3 tst-array4 tst-array5 + tests-static = tst-tls1-static tst-tls2-static tst-stackguard1-static \ +- tst-leaks1-static tst-array1-static tst-array5-static ++ tst-leaks1-static tst-array1-static tst-array5-static \ ++ tst-ptrguard1-static + ifeq (yes,$(build-shared)) + tests-static += tst-tls9-static + tst-tls9-static-ENV = \ +@@ -145,7 +146,8 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ + tst-audit1 tst-audit2 tst-audit8 \ + tst-stackguard1 tst-addr1 tst-thrlock \ + tst-unique1 tst-unique2 tst-unique3 tst-unique4 \ +- tst-initorder tst-initorder2 tst-relsort1 tst-null-argv ++ tst-initorder tst-initorder2 tst-relsort1 tst-null-argv \ ++ tst-ptrguard1 + # reldep9 + test-srcs = tst-pathopt + selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null) +@@ -1016,6 +1018,9 @@ LDFLAGS-order2mod2.so = $(no-as-needed) + tst-stackguard1-ARGS = --command "$(host-test-program-cmd) --child" + tst-stackguard1-static-ARGS = --command "$(objpfx)tst-stackguard1-static --child" + ++tst-ptrguard1-ARGS = --command "$(host-test-program-cmd) --child" ++tst-ptrguard1-static-ARGS = --command "$(objpfx)tst-ptrguard1-static --child" ++ + $(objpfx)tst-leaks1: $(libdl) + $(objpfx)tst-leaks1-mem: $(objpfx)tst-leaks1.out + $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks1.mtrace > $@ +diff --git a/elf/tst-ptrguard1-static.c b/elf/tst-ptrguard1-static.c +new file mode 100644 +index 0000000..7aff3b7 +--- /dev/null ++++ b/elf/tst-ptrguard1-static.c +@@ -0,0 +1 @@ ++#include "tst-ptrguard1.c" +diff --git a/elf/tst-ptrguard1.c b/elf/tst-ptrguard1.c +new file mode 100644 +index 0000000..c344a04 +--- /dev/null ++++ b/elf/tst-ptrguard1.c +@@ -0,0 +1,202 @@ ++/* Copyright (C) 2013 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 ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ <http://www.gnu.org/licenses/>. */ ++ ++#include <errno.h> ++#include <stdbool.h> ++#include <stdio.h> ++#include <stdlib.h> ++#include <string.h> ++#include <sys/wait.h> ++#include <stackguard-macros.h> ++#include <tls.h> ++#include <unistd.h> ++ ++#ifndef POINTER_CHK_GUARD ++extern uintptr_t __pointer_chk_guard; ++# define POINTER_CHK_GUARD __pointer_chk_guard ++#endif ++ ++static const char *command; ++static bool child; ++static uintptr_t ptr_chk_guard_copy; ++static bool ptr_chk_guard_copy_set; ++static int fds[2]; ++ ++static void __attribute__ ((constructor)) ++con (void) ++{ ++ ptr_chk_guard_copy = POINTER_CHK_GUARD; ++ ptr_chk_guard_copy_set = true; ++} ++ ++static int ++uintptr_t_cmp (const void *a, const void *b) ++{ ++ if (*(uintptr_t *) a < *(uintptr_t *) b) ++ return 1; ++ if (*(uintptr_t *) a > *(uintptr_t *) b) ++ return -1; ++ return 0; ++} ++ ++static int ++do_test (void) ++{ ++ if (!ptr_chk_guard_copy_set) ++ { ++ puts ("constructor has not been run"); ++ return 1; ++ } ++ ++ if (ptr_chk_guard_copy != POINTER_CHK_GUARD) ++ { ++ puts ("POINTER_CHK_GUARD changed between constructor and do_test"); ++ return 1; ++ } ++ ++ if (child) ++ { ++ write (2, &ptr_chk_guard_copy, sizeof (ptr_chk_guard_copy)); ++ return 0; ++ } ++ ++ if (command == NULL) ++ { ++ puts ("missing --command or --child argument"); ++ return 1; ++ } ++ ++#define N 16 ++ uintptr_t child_ptr_chk_guards[N + 1]; ++ child_ptr_chk_guards[N] = ptr_chk_guard_copy; ++ int i; ++ for (i = 0; i < N; ++i) ++ { ++ if (pipe (fds) < 0) ++ { ++ printf ("couldn't create pipe: %m\n"); ++ return 1; ++ } ++ ++ pid_t pid = fork (); ++ if (pid < 0) ++ { ++ printf ("fork failed: %m\n"); ++ return 1; ++ } ++ ++ if (!pid) ++ { ++ if (ptr_chk_guard_copy != POINTER_CHK_GUARD) ++ { ++ puts ("POINTER_CHK_GUARD changed after fork"); ++ exit (1); ++ } ++ ++ close (fds[0]); ++ close (2); ++ dup2 (fds[1], 2); ++ close (fds[1]); ++ ++ system (command); ++ exit (0); ++ } ++ ++ close (fds[1]); ++ ++ if (TEMP_FAILURE_RETRY (read (fds[0], &child_ptr_chk_guards[i], ++ sizeof (uintptr_t))) != sizeof (uintptr_t)) ++ { ++ puts ("could not read ptr_chk_guard value from child"); ++ return 1; ++ } ++ ++ close (fds[0]); ++ ++ pid_t termpid; ++ int status; ++ termpid = TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)); ++ if (termpid == -1) ++ { ++ printf ("waitpid failed: %m\n"); ++ return 1; ++ } ++ else if (termpid != pid) ++ { ++ printf ("waitpid returned %ld != %ld\n", ++ (long int) termpid, (long int) pid); ++ return 1; ++ } ++ else if (!WIFEXITED (status) || WEXITSTATUS (status)) ++ { ++ puts ("child hasn't exited with exit status 0"); ++ return 1; ++ } ++ } ++ ++ qsort (child_ptr_chk_guards, N + 1, sizeof (uintptr_t), uintptr_t_cmp); ++ ++ /* The default pointer guard is the same as the default stack guard. ++ They are only set to default if dl_random is NULL. */ ++ uintptr_t default_guard = 0; ++ unsigned char *p = (unsigned char *) &default_guard; ++ p[sizeof (uintptr_t) - 1] = 255; ++ p[sizeof (uintptr_t) - 2] = '\n'; ++ p[0] = 0; ++ ++ /* Test if the pointer guard canaries are either randomized, ++ or equal to the default pointer guard value. ++ Even with randomized pointer guards it might happen ++ that the random number generator generates the same ++ values, but if that happens in more than half from ++ the 16 runs, something is very wrong. */ ++ int ndifferences = 0; ++ int ndefaults = 0; ++ for (i = 0; i < N; ++i) ++ { ++ if (child_ptr_chk_guards[i] != child_ptr_chk_guards[i+1]) ++ ndifferences++; ++ else if (child_ptr_chk_guards[i] == default_guard) ++ ndefaults++; ++ } ++ ++ printf ("differences %d defaults %d\n", ndifferences, ndefaults); ++ ++ if (ndifferences < N / 2 && ndefaults < N / 2) ++ { ++ puts ("pointer guard values are not randomized enough"); ++ puts ("nor equal to the default value"); ++ return 1; ++ } ++ ++ return 0; ++} ++ ++#define OPT_COMMAND 10000 ++#define OPT_CHILD 10001 ++#define CMDLINE_OPTIONS \ ++ { "command", required_argument, NULL, OPT_COMMAND }, \ ++ { "child", no_argument, NULL, OPT_CHILD }, ++#define CMDLINE_PROCESS \ ++ case OPT_COMMAND: \ ++ command = optarg; \ ++ break; \ ++ case OPT_CHILD: \ ++ child = true; \ ++ break; ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff --git a/ports/sysdeps/ia64/stackguard-macros.h b/ports/sysdeps/ia64/stackguard-macros.h +index dc683c2..3907293 100644 +--- a/ports/sysdeps/ia64/stackguard-macros.h ++++ b/ports/sysdeps/ia64/stackguard-macros.h +@@ -2,3 +2,6 @@ + + #define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("adds %0 = -8, r13;; ld8 %0 = [%0]" : "=r" (x)); x; }) ++ ++#define POINTER_CHK_GUARD \ ++ ({ uintptr_t x; asm ("adds %0 = -16, r13;; ld8 %0 = [%0]" : "=r" (x)); x; }) +diff --git a/ports/sysdeps/tile/stackguard-macros.h b/ports/sysdeps/tile/stackguard-macros.h +index 589ea2b..f2e041b 100644 +--- a/ports/sysdeps/tile/stackguard-macros.h ++++ b/ports/sysdeps/tile/stackguard-macros.h +@@ -4,11 +4,17 @@ + # if __WORDSIZE == 64 + # define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("addi %0, tp, -16; ld %0, %0" : "=r" (x)); x; }) ++# define POINTER_CHK_GUARD \ ++ ({ uintptr_t x; asm ("addi %0, tp, -24; ld %0, %0" : "=r" (x)); x; }) + # else + # define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("addi %0, tp, -8; ld4s %0, %0" : "=r" (x)); x; }) ++# define POINTER_CHK_GUARD \ ++ ({ uintptr_t x; asm ("addi %0, tp, -12; ld4s %0, %0" : "=r" (x)); x; }) + # endif + #else + # define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("addi %0, tp, -8; lw %0, %0" : "=r" (x)); x; }) ++# define POINTER_CHK_GUARD \ ++ ({ uintptr_t x; asm ("addi %0, tp, -12; lw %0, %0" : "=r" (x)); x; }) + #endif +diff --git a/sysdeps/generic/stackguard-macros.h b/sysdeps/generic/stackguard-macros.h +index ababf65..4fa3d96 100644 +--- a/sysdeps/generic/stackguard-macros.h ++++ b/sysdeps/generic/stackguard-macros.h +@@ -2,3 +2,6 @@ + + extern uintptr_t __stack_chk_guard; + #define STACK_CHK_GUARD __stack_chk_guard ++ ++extern uintptr_t __pointer_chk_guard_local; ++#define POINTER_CHK_GUARD __pointer_chk_guard_local +diff --git a/sysdeps/i386/stackguard-macros.h b/sysdeps/i386/stackguard-macros.h +index 8c31e19..0397629 100644 +--- a/sysdeps/i386/stackguard-macros.h ++++ b/sysdeps/i386/stackguard-macros.h +@@ -2,3 +2,11 @@ + + #define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("movl %%gs:0x14, %0" : "=r" (x)); x; }) ++ ++#define POINTER_CHK_GUARD \ ++ ({ \ ++ uintptr_t x; \ ++ asm ("movl %%gs:%c1, %0" : "=r" (x) \ ++ : "i" (offsetof (tcbhead_t, pointer_guard))); \ ++ x; \ ++ }) +diff --git a/sysdeps/powerpc/powerpc32/stackguard-macros.h b/sysdeps/powerpc/powerpc32/stackguard-macros.h +index 839f6a4..b3d0af8 100644 +--- a/sysdeps/powerpc/powerpc32/stackguard-macros.h ++++ b/sysdeps/powerpc/powerpc32/stackguard-macros.h +@@ -2,3 +2,13 @@ + + #define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("lwz %0,-28680(2)" : "=r" (x)); x; }) ++ ++#define POINTER_CHK_GUARD \ ++ ({ \ ++ uintptr_t x; \ ++ asm ("lwz %0,%1(2)" \ ++ : "=r" (x) \ ++ : "i" (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t)) \ ++ ); \ ++ x; \ ++ }) +diff --git a/sysdeps/powerpc/powerpc64/stackguard-macros.h b/sysdeps/powerpc/powerpc64/stackguard-macros.h +index 9da879c..4620f96 100644 +--- a/sysdeps/powerpc/powerpc64/stackguard-macros.h ++++ b/sysdeps/powerpc/powerpc64/stackguard-macros.h +@@ -2,3 +2,13 @@ + + #define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("ld %0,-28688(13)" : "=r" (x)); x; }) ++ ++#define POINTER_CHK_GUARD \ ++ ({ \ ++ uintptr_t x; \ ++ asm ("ld %0,%1(2)" \ ++ : "=r" (x) \ ++ : "i" (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t)) \ ++ ); \ ++ x; \ ++ }) +diff --git a/sysdeps/s390/s390-32/stackguard-macros.h b/sysdeps/s390/s390-32/stackguard-macros.h +index b74c579..449e8d4 100644 +--- a/sysdeps/s390/s390-32/stackguard-macros.h ++++ b/sysdeps/s390/s390-32/stackguard-macros.h +@@ -2,3 +2,14 @@ + + #define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("ear %0,%%a0; l %0,0x14(%0)" : "=a" (x)); x; }) ++ ++/* On s390/s390x there is no unique pointer guard, instead we use the ++ same value as the stack guard. */ ++#define POINTER_CHK_GUARD \ ++ ({ \ ++ uintptr_t x; \ ++ asm ("ear %0,%%a0; l %0,%1(%0)" \ ++ : "=a" (x) \ ++ : "i" (offsetof (tcbhead_t, stack_guard))); \ ++ x; \ ++ }) +diff --git a/sysdeps/s390/s390-64/stackguard-macros.h b/sysdeps/s390/s390-64/stackguard-macros.h +index 0cebb5f..c8270fb 100644 +--- a/sysdeps/s390/s390-64/stackguard-macros.h ++++ b/sysdeps/s390/s390-64/stackguard-macros.h +@@ -2,3 +2,17 @@ + + #define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("ear %0,%%a0; sllg %0,%0,32; ear %0,%%a1; lg %0,0x28(%0)" : "=a" (x)); x; }) ++ ++/* On s390/s390x there is no unique pointer guard, instead we use the ++ same value as the stack guard. */ ++#define POINTER_CHK_GUARD \ ++ ({ \ ++ uintptr_t x; \ ++ asm ("ear %0,%%a0;" \ ++ "sllg %0,%0,32;" \ ++ "ear %0,%%a1;" \ ++ "lg %0,%1(%0)" \ ++ : "=a" (x) \ ++ : "i" (offsetof (tcbhead_t, stack_guard))); \ ++ x; \ ++ }) +diff --git a/sysdeps/sparc/sparc32/stackguard-macros.h b/sysdeps/sparc/sparc32/stackguard-macros.h +index c0b02b0..1eef0f1 100644 +--- a/sysdeps/sparc/sparc32/stackguard-macros.h ++++ b/sysdeps/sparc/sparc32/stackguard-macros.h +@@ -2,3 +2,6 @@ + + #define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("ld [%%g7+0x14], %0" : "=r" (x)); x; }) ++ ++#define POINTER_CHK_GUARD \ ++ ({ uintptr_t x; asm ("ld [%%g7+0x18], %0" : "=r" (x)); x; }) +diff --git a/sysdeps/sparc/sparc64/stackguard-macros.h b/sysdeps/sparc/sparc64/stackguard-macros.h +index 80f0635..cc0c12c 100644 +--- a/sysdeps/sparc/sparc64/stackguard-macros.h ++++ b/sysdeps/sparc/sparc64/stackguard-macros.h +@@ -2,3 +2,6 @@ + + #define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("ldx [%%g7+0x28], %0" : "=r" (x)); x; }) ++ ++#define POINTER_CHK_GUARD \ ++ ({ uintptr_t x; asm ("ldx [%%g7+0x30], %0" : "=r" (x)); x; }) +diff --git a/sysdeps/x86_64/stackguard-macros.h b/sysdeps/x86_64/stackguard-macros.h +index d7fedb3..1948800 100644 +--- a/sysdeps/x86_64/stackguard-macros.h ++++ b/sysdeps/x86_64/stackguard-macros.h +@@ -4,3 +4,8 @@ + ({ uintptr_t x; \ + asm ("mov %%fs:%c1, %0" : "=r" (x) \ + : "i" (offsetof (tcbhead_t, stack_guard))); x; }) ++ ++#define POINTER_CHK_GUARD \ ++ ({ uintptr_t x; \ ++ asm ("mov %%fs:%c1, %0" : "=r" (x) \ ++ : "i" (offsetof (tcbhead_t, pointer_guard))); x; }) +diff --git a/elf/Makefile b/elf/Makefile +index cb8da93..27d249b 100644 +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -1019,6 +1019,9 @@ tst-stackguard1-ARGS = --command "$(host-test-program-cmd) --child" + tst-stackguard1-static-ARGS = --command "$(objpfx)tst-stackguard1-static --child" + + tst-ptrguard1-ARGS = --command "$(host-test-program-cmd) --child" ++# When built statically, the pointer guard interface uses ++# __pointer_chk_guard_local. ++CFLAGS-tst-ptrguard1-static.c = -DPTRGUARD_LOCAL + tst-ptrguard1-static-ARGS = --command "$(objpfx)tst-ptrguard1-static --child" + + $(objpfx)tst-leaks1: $(libdl) +diff --git a/sysdeps/generic/stackguard-macros.h b/sysdeps/generic/stackguard-macros.h +index 4fa3d96..b4a6b23 100644 +--- a/sysdeps/generic/stackguard-macros.h ++++ b/sysdeps/generic/stackguard-macros.h +@@ -3,5 +3,10 @@ + extern uintptr_t __stack_chk_guard; + #define STACK_CHK_GUARD __stack_chk_guard + ++#ifdef PTRGUARD_LOCAL + extern uintptr_t __pointer_chk_guard_local; +-#define POINTER_CHK_GUARD __pointer_chk_guard_local ++# define POINTER_CHK_GUARD __pointer_chk_guard_local ++#else ++extern uintptr_t __pointer_chk_guard; ++# define POINTER_CHK_GUARD __pointer_chk_guard ++#endif diff --git a/core/glibc/glibc-2.18-strcoll-CVE-2012-4412+4424.patch b/core/glibc/glibc-2.18-strcoll-CVE-2012-4412+4424.patch new file mode 100644 index 000000000..5558c1fe9 --- /dev/null +++ b/core/glibc/glibc-2.18-strcoll-CVE-2012-4412+4424.patch @@ -0,0 +1,1004 @@ +diff --git a/string/strcoll_l.c b/string/strcoll_l.c +index ecda08f..bb34a72 100644 +--- a/string/strcoll_l.c ++++ b/string/strcoll_l.c +@@ -41,11 +41,434 @@ + + #include "../locale/localeinfo.h" + ++/* Track status while looking for sequences in a string. */ ++typedef struct ++{ ++ int len; /* Length of the current sequence. */ ++ size_t val; /* Position of the sequence relative to the ++ previous non-ignored sequence. */ ++ size_t idxnow; /* Current index in sequences. */ ++ size_t idxmax; /* Maximum index in sequences. */ ++ size_t idxcnt; /* Current count of indices. */ ++ size_t backw; /* Current Backward sequence index. */ ++ size_t backw_stop; /* Index where the backward sequences stop. */ ++ const USTRING_TYPE *us; /* The string. */ ++ int32_t *idxarr; /* Array to cache weight indices. */ ++ unsigned char *rulearr; /* Array to cache rules. */ ++ unsigned char rule; /* Saved rule for the first sequence. */ ++ int32_t idx; /* Index to weight of the current sequence. */ ++ int32_t save_idx; /* Save looked up index of a forward ++ sequence after the last backward ++ sequence. */ ++ const USTRING_TYPE *back_us; /* Beginning of the backward sequence. */ ++} coll_seq; ++ ++/* Get next sequence. The weight indices are cached, so we don't need to ++ traverse the string. */ ++static void ++get_next_seq_cached (coll_seq *seq, int nrules, int pass, ++ const unsigned char *rulesets, ++ const USTRING_TYPE *weights) ++{ ++ size_t val = seq->val = 0; ++ int len = seq->len; ++ size_t backw_stop = seq->backw_stop; ++ size_t backw = seq->backw; ++ size_t idxcnt = seq->idxcnt; ++ size_t idxmax = seq->idxmax; ++ size_t idxnow = seq->idxnow; ++ unsigned char *rulearr = seq->rulearr; ++ int32_t *idxarr = seq->idxarr; ++ ++ while (len == 0) ++ { ++ ++val; ++ if (backw_stop != ~0ul) ++ { ++ /* There is something pushed. */ ++ if (backw == backw_stop) ++ { ++ /* The last pushed character was handled. Continue ++ with forward characters. */ ++ if (idxcnt < idxmax) ++ { ++ idxnow = idxcnt; ++ backw_stop = ~0ul; ++ } ++ else ++ { ++ /* Nothing any more. The backward sequence ++ ended with the last sequence in the string. */ ++ idxnow = ~0ul; ++ break; ++ } ++ } ++ else ++ idxnow = --backw; ++ } ++ else ++ { ++ backw_stop = idxcnt; ++ ++ while (idxcnt < idxmax) ++ { ++ if ((rulesets[rulearr[idxcnt] * nrules + pass] ++ & sort_backward) == 0) ++ /* No more backward characters to push. */ ++ break; ++ ++idxcnt; ++ } ++ ++ if (backw_stop == idxcnt) ++ { ++ /* No sequence at all or just one. */ ++ if (idxcnt == idxmax) ++ /* Note that LEN is still zero. */ ++ break; ++ ++ backw_stop = ~0ul; ++ idxnow = idxcnt++; ++ } ++ else ++ /* We pushed backward sequences. */ ++ idxnow = backw = idxcnt - 1; ++ } ++ len = weights[idxarr[idxnow]++]; ++ } ++ ++ /* Update the structure. */ ++ seq->val = val; ++ seq->len = len; ++ seq->backw_stop = backw_stop; ++ seq->backw = backw; ++ seq->idxcnt = idxcnt; ++ seq->idxnow = idxnow; ++} ++ ++/* Get next sequence. Traverse the string as required. */ ++static void ++get_next_seq (coll_seq *seq, int nrules, const unsigned char *rulesets, ++ const USTRING_TYPE *weights, const int32_t *table, ++ const USTRING_TYPE *extra, const int32_t *indirect) ++{ ++#include WEIGHT_H ++ size_t val = seq->val = 0; ++ int len = seq->len; ++ size_t backw_stop = seq->backw_stop; ++ size_t backw = seq->backw; ++ size_t idxcnt = seq->idxcnt; ++ size_t idxmax = seq->idxmax; ++ size_t idxnow = seq->idxnow; ++ unsigned char *rulearr = seq->rulearr; ++ int32_t *idxarr = seq->idxarr; ++ const USTRING_TYPE *us = seq->us; ++ ++ while (len == 0) ++ { ++ ++val; ++ if (backw_stop != ~0ul) ++ { ++ /* There is something pushed. */ ++ if (backw == backw_stop) ++ { ++ /* The last pushed character was handled. Continue ++ with forward characters. */ ++ if (idxcnt < idxmax) ++ { ++ idxnow = idxcnt; ++ backw_stop = ~0ul; ++ } ++ else ++ /* Nothing any more. The backward sequence ended with ++ the last sequence in the string. Note that LEN ++ is still zero. */ ++ break; ++ } ++ else ++ idxnow = --backw; ++ } ++ else ++ { ++ backw_stop = idxmax; ++ ++ while (*us != L('\0')) ++ { ++ int32_t tmp = findidx (&us, -1); ++ rulearr[idxmax] = tmp >> 24; ++ idxarr[idxmax] = tmp & 0xffffff; ++ idxcnt = idxmax++; ++ ++ if ((rulesets[rulearr[idxcnt] * nrules] ++ & sort_backward) == 0) ++ /* No more backward characters to push. */ ++ break; ++ ++idxcnt; ++ } ++ ++ if (backw_stop >= idxcnt) ++ { ++ /* No sequence at all or just one. */ ++ if (idxcnt == idxmax || backw_stop > idxcnt) ++ /* Note that LEN is still zero. */ ++ break; ++ ++ backw_stop = ~0ul; ++ idxnow = idxcnt; ++ } ++ else ++ /* We pushed backward sequences. */ ++ idxnow = backw = idxcnt - 1; ++ } ++ len = weights[idxarr[idxnow]++]; ++ } ++ ++ /* Update the structure. */ ++ seq->val = val; ++ seq->len = len; ++ seq->backw_stop = backw_stop; ++ seq->backw = backw; ++ seq->idxcnt = idxcnt; ++ seq->idxmax = idxmax; ++ seq->idxnow = idxnow; ++ seq->us = us; ++} ++ ++/* Get next sequence. Traverse the string as required. This function does not ++ set or use any index or rule cache. */ ++static void ++get_next_seq_nocache (coll_seq *seq, int nrules, const unsigned char *rulesets, ++ const USTRING_TYPE *weights, const int32_t *table, ++ const USTRING_TYPE *extra, const int32_t *indirect, ++ int pass) ++{ ++#include WEIGHT_H ++ size_t val = seq->val = 0; ++ int len = seq->len; ++ size_t backw_stop = seq->backw_stop; ++ size_t backw = seq->backw; ++ size_t idxcnt = seq->idxcnt; ++ size_t idxmax = seq->idxmax; ++ int32_t idx = seq->idx; ++ const USTRING_TYPE *us = seq->us; ++ ++ while (len == 0) ++ { ++ ++val; ++ if (backw_stop != ~0ul) ++ { ++ /* There is something pushed. */ ++ if (backw == backw_stop) ++ { ++ /* The last pushed character was handled. Continue ++ with forward characters. */ ++ if (idxcnt < idxmax) ++ { ++ idx = seq->save_idx; ++ backw_stop = ~0ul; ++ } ++ else ++ { ++ /* Nothing anymore. The backward sequence ended with ++ the last sequence in the string. Note that len is ++ still zero. */ ++ idx = 0; ++ break; ++ } ++ } ++ else ++ { ++ /* XXX Traverse BACKW sequences from the beginning of ++ BACKW_STOP to get the next sequence. Is ther a quicker way ++ to do this? */ ++ size_t i = backw_stop; ++ us = seq->back_us; ++ while (i < backw) ++ { ++ int32_t tmp = findidx (&us, -1); ++ idx = tmp & 0xffffff; ++ i++; ++ } ++ --backw; ++ us = seq->us; ++ } ++ } ++ else ++ { ++ backw_stop = idxmax; ++ int32_t prev_idx = idx; ++ ++ while (*us != L('\0')) ++ { ++ int32_t tmp = findidx (&us, -1); ++ unsigned char rule = tmp >> 24; ++ prev_idx = idx; ++ idx = tmp & 0xffffff; ++ idxcnt = idxmax++; ++ ++ /* Save the rule for the first sequence. */ ++ if (__glibc_unlikely (idxcnt == 0)) ++ seq->rule = rule; ++ ++ if ((rulesets[rule * nrules + pass] ++ & sort_backward) == 0) ++ /* No more backward characters to push. */ ++ break; ++ ++idxcnt; ++ } ++ ++ if (backw_stop >= idxcnt) ++ { ++ /* No sequence at all or just one. */ ++ if (idxcnt == idxmax || backw_stop > idxcnt) ++ /* Note that len is still zero. */ ++ break; ++ ++ backw_stop = ~0ul; ++ } ++ else ++ { ++ /* We pushed backward sequences. If the stream ended with the ++ backward sequence, then we process the last sequence we ++ found. Otherwise we process the sequence before the last ++ one since the last one was a forward sequence. */ ++ seq->back_us = seq->us; ++ seq->us = us; ++ backw = idxcnt; ++ if (idxmax > idxcnt) ++ { ++ backw--; ++ seq->save_idx = idx; ++ idx = prev_idx; ++ } ++ if (backw > backw_stop) ++ backw--; ++ } ++ } ++ ++ len = weights[idx++]; ++ /* Skip over indices of previous levels. */ ++ for (int i = 0; i < pass; i++) ++ { ++ idx += len; ++ len = weights[idx]; ++ idx++; ++ } ++ } ++ ++ /* Update the structure. */ ++ seq->val = val; ++ seq->len = len; ++ seq->backw_stop = backw_stop; ++ seq->backw = backw; ++ seq->idxcnt = idxcnt; ++ seq->idxmax = idxmax; ++ seq->us = us; ++ seq->idx = idx; ++} ++ ++/* Compare two sequences. This version does not use the index and rules ++ cache. */ ++static int ++do_compare_nocache (coll_seq *seq1, coll_seq *seq2, int position, ++ const USTRING_TYPE *weights) ++{ ++ int seq1len = seq1->len; ++ int seq2len = seq2->len; ++ size_t val1 = seq1->val; ++ size_t val2 = seq2->val; ++ int idx1 = seq1->idx; ++ int idx2 = seq2->idx; ++ int result = 0; ++ ++ /* Test for position if necessary. */ ++ if (position && val1 != val2) ++ { ++ result = val1 > val2 ? 1 : -1; ++ goto out; ++ } ++ ++ /* Compare the two sequences. */ ++ do ++ { ++ if (weights[idx1] != weights[idx2]) ++ { ++ /* The sequences differ. */ ++ result = weights[idx1] - weights[idx2]; ++ goto out; ++ } ++ ++ /* Increment the offsets. */ ++ ++idx1; ++ ++idx2; ++ ++ --seq1len; ++ --seq2len; ++ } ++ while (seq1len > 0 && seq2len > 0); ++ ++ if (position && seq1len != seq2len) ++ result = seq1len - seq2len; ++ ++out: ++ seq1->len = seq1len; ++ seq2->len = seq2len; ++ seq1->idx = idx1; ++ seq2->idx = idx2; ++ return result; ++} ++ ++/* Compare two sequences using the index cache. */ ++static int ++do_compare (coll_seq *seq1, coll_seq *seq2, int position, ++ const USTRING_TYPE *weights) ++{ ++ int seq1len = seq1->len; ++ int seq2len = seq2->len; ++ size_t val1 = seq1->val; ++ size_t val2 = seq2->val; ++ int32_t *idx1arr = seq1->idxarr; ++ int32_t *idx2arr = seq2->idxarr; ++ int idx1now = seq1->idxnow; ++ int idx2now = seq2->idxnow; ++ int result = 0; ++ ++ /* Test for position if necessary. */ ++ if (position && val1 != val2) ++ { ++ result = val1 > val2 ? 1 : -1; ++ goto out; ++ } ++ ++ /* Compare the two sequences. */ ++ do ++ { ++ if (weights[idx1arr[idx1now]] != weights[idx2arr[idx2now]]) ++ { ++ /* The sequences differ. */ ++ result = weights[idx1arr[idx1now]] - weights[idx2arr[idx2now]]; ++ goto out; ++ } ++ ++ /* Increment the offsets. */ ++ ++idx1arr[idx1now]; ++ ++idx2arr[idx2now]; ++ ++ --seq1len; ++ --seq2len; ++ } ++ while (seq1len > 0 && seq2len > 0); ++ ++ if (position && seq1len != seq2len) ++ result = seq1len - seq2len; ++ ++out: ++ seq1->len = seq1len; ++ seq2->len = seq2len; ++ return result; ++} ++ + int +-STRCOLL (s1, s2, l) +- const STRING_TYPE *s1; +- const STRING_TYPE *s2; +- __locale_t l; ++STRCOLL (const STRING_TYPE *s1, const STRING_TYPE *s2, __locale_t l) + { + struct __locale_data *current = l->__locales[LC_COLLATE]; + uint_fast32_t nrules = current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].word; +@@ -56,34 +479,6 @@ STRCOLL (s1, s2, l) + const USTRING_TYPE *weights; + const USTRING_TYPE *extra; + const int32_t *indirect; +- uint_fast32_t pass; +- int result = 0; +- const USTRING_TYPE *us1; +- const USTRING_TYPE *us2; +- size_t s1len; +- size_t s2len; +- int32_t *idx1arr; +- int32_t *idx2arr; +- unsigned char *rule1arr; +- unsigned char *rule2arr; +- size_t idx1max; +- size_t idx2max; +- size_t idx1cnt; +- size_t idx2cnt; +- size_t idx1now; +- size_t idx2now; +- size_t backw1_stop; +- size_t backw2_stop; +- size_t backw1; +- size_t backw2; +- int val1; +- int val2; +- int position; +- int seq1len; +- int seq2len; +- int use_malloc; +- +-#include WEIGHT_H + + if (nrules == 0) + return STRCMP (s1, s2); +@@ -98,7 +493,6 @@ STRCOLL (s1, s2, l) + current->values[_NL_ITEM_INDEX (CONCAT(_NL_COLLATE_EXTRA,SUFFIX))].string; + indirect = (const int32_t *) + current->values[_NL_ITEM_INDEX (CONCAT(_NL_COLLATE_INDIRECT,SUFFIX))].string; +- use_malloc = 0; + + assert (((uintptr_t) table) % __alignof__ (table[0]) == 0); + assert (((uintptr_t) weights) % __alignof__ (weights[0]) == 0); +@@ -106,18 +500,13 @@ STRCOLL (s1, s2, l) + assert (((uintptr_t) indirect) % __alignof__ (indirect[0]) == 0); + + /* We need this a few times. */ +- s1len = STRLEN (s1); +- s2len = STRLEN (s2); ++ size_t s1len = STRLEN (s1); ++ size_t s2len = STRLEN (s2); + + /* Catch empty strings. */ +- if (__builtin_expect (s1len == 0, 0) || __builtin_expect (s2len == 0, 0)) ++ if (__glibc_unlikely (s1len == 0) || __glibc_unlikely (s2len == 0)) + return (s1len != 0) - (s2len != 0); + +- /* We need the elements of the strings as unsigned values since they +- are used as indeces. */ +- us1 = (const USTRING_TYPE *) s1; +- us2 = (const USTRING_TYPE *) s2; +- + /* Perform the first pass over the string and while doing this find + and store the weights for each character. Since we want this to + be as fast as possible we are using `alloca' to store the temporary +@@ -127,411 +516,124 @@ STRCOLL (s1, s2, l) + + Please note that the localedef programs makes sure that `position' + is not used at the first level. */ +- if (! __libc_use_alloca ((s1len + s2len) * (sizeof (int32_t) + 1))) +- { +- idx1arr = (int32_t *) malloc ((s1len + s2len) * (sizeof (int32_t) + 1)); +- idx2arr = &idx1arr[s1len]; +- rule1arr = (unsigned char *) &idx2arr[s2len]; +- rule2arr = &rule1arr[s1len]; +- +- if (idx1arr == NULL) +- /* No memory. Well, go with the stack then. +- +- XXX Once this implementation is stable we will handle this +- differently. Instead of precomputing the indeces we will +- do this in time. This means, though, that this happens for +- every pass again. */ +- goto try_stack; +- use_malloc = 1; +- } +- else +- { +- try_stack: +- idx1arr = (int32_t *) alloca (s1len * sizeof (int32_t)); +- idx2arr = (int32_t *) alloca (s2len * sizeof (int32_t)); +- rule1arr = (unsigned char *) alloca (s1len); +- rule2arr = (unsigned char *) alloca (s2len); +- } + +- idx1cnt = 0; +- idx2cnt = 0; +- idx1max = 0; +- idx2max = 0; +- idx1now = 0; +- idx2now = 0; +- backw1_stop = ~0ul; +- backw2_stop = ~0ul; +- backw1 = ~0ul; +- backw2 = ~0ul; +- seq1len = 0; +- seq2len = 0; +- position = rulesets[0] & sort_position; +- while (1) +- { +- val1 = 0; +- val2 = 0; +- +- /* Get the next non-IGNOREd element for string `s1'. */ +- if (seq1len == 0) +- do +- { +- ++val1; +- +- if (backw1_stop != ~0ul) +- { +- /* The is something pushed. */ +- if (backw1 == backw1_stop) +- { +- /* The last pushed character was handled. Continue +- with forward characters. */ +- if (idx1cnt < idx1max) +- { +- idx1now = idx1cnt; +- backw1_stop = ~0ul; +- } +- else +- /* Nothing anymore. The backward sequence ended with +- the last sequence in the string. Note that seq1len +- is still zero. */ +- break; +- } +- else +- idx1now = --backw1; +- } +- else +- { +- backw1_stop = idx1max; +- +- while (*us1 != L('\0')) +- { +- int32_t tmp = findidx (&us1, -1); +- rule1arr[idx1max] = tmp >> 24; +- idx1arr[idx1max] = tmp & 0xffffff; +- idx1cnt = idx1max++; +- +- if ((rulesets[rule1arr[idx1cnt] * nrules] +- & sort_backward) == 0) +- /* No more backward characters to push. */ +- break; +- ++idx1cnt; +- } +- +- if (backw1_stop >= idx1cnt) +- { +- /* No sequence at all or just one. */ +- if (idx1cnt == idx1max || backw1_stop > idx1cnt) +- /* Note that seq1len is still zero. */ +- break; +- +- backw1_stop = ~0ul; +- idx1now = idx1cnt; +- } +- else +- /* We pushed backward sequences. */ +- idx1now = backw1 = idx1cnt - 1; +- } +- } +- while ((seq1len = weights[idx1arr[idx1now]++]) == 0); +- +- /* And the same for string `s2'. */ +- if (seq2len == 0) +- do +- { +- ++val2; +- +- if (backw2_stop != ~0ul) +- { +- /* The is something pushed. */ +- if (backw2 == backw2_stop) +- { +- /* The last pushed character was handled. Continue +- with forward characters. */ +- if (idx2cnt < idx2max) +- { +- idx2now = idx2cnt; +- backw2_stop = ~0ul; +- } +- else +- /* Nothing anymore. The backward sequence ended with +- the last sequence in the string. Note that seq2len +- is still zero. */ +- break; +- } +- else +- idx2now = --backw2; +- } +- else +- { +- backw2_stop = idx2max; +- +- while (*us2 != L('\0')) +- { +- int32_t tmp = findidx (&us2, -1); +- rule2arr[idx2max] = tmp >> 24; +- idx2arr[idx2max] = tmp & 0xffffff; +- idx2cnt = idx2max++; +- +- if ((rulesets[rule2arr[idx2cnt] * nrules] +- & sort_backward) == 0) +- /* No more backward characters to push. */ +- break; +- ++idx2cnt; +- } +- +- if (backw2_stop >= idx2cnt) +- { +- /* No sequence at all or just one. */ +- if (idx2cnt == idx2max || backw2_stop > idx2cnt) +- /* Note that seq1len is still zero. */ +- break; +- +- backw2_stop = ~0ul; +- idx2now = idx2cnt; +- } +- else +- /* We pushed backward sequences. */ +- idx2now = backw2 = idx2cnt - 1; +- } +- } +- while ((seq2len = weights[idx2arr[idx2now]++]) == 0); +- +- /* See whether any or both strings are empty. */ +- if (seq1len == 0 || seq2len == 0) +- { +- if (seq1len == seq2len) +- /* Both ended. So far so good, both strings are equal at the +- first level. */ +- break; +- +- /* This means one string is shorter than the other. Find out +- which one and return an appropriate value. */ +- result = seq1len == 0 ? -1 : 1; +- goto free_and_return; +- } ++ coll_seq seq1, seq2; ++ bool use_malloc = false; ++ int result = 0; + +- /* Test for position if necessary. */ +- if (position && val1 != val2) +- { +- result = val1 - val2; +- goto free_and_return; +- } ++ memset (&seq1, 0, sizeof (seq1)); ++ seq2 = seq1; + +- /* Compare the two sequences. */ +- do +- { +- if (weights[idx1arr[idx1now]] != weights[idx2arr[idx2now]]) +- { +- /* The sequences differ. */ +- result = weights[idx1arr[idx1now]] - weights[idx2arr[idx2now]]; +- goto free_and_return; +- } ++ size_t size_max = SIZE_MAX / (sizeof (int32_t) + 1); + +- /* Increment the offsets. */ +- ++idx1arr[idx1now]; +- ++idx2arr[idx2now]; ++ /* If the strings are long enough to cause overflow in the size request, then ++ skip the allocation and proceed with the non-cached routines. */ ++ if (MIN (s1len, s2len) > size_max ++ || MAX (s1len, s2len) > size_max - MIN (s1len, s2len)) ++ goto begin_collate; + +- --seq1len; +- --seq2len; +- } +- while (seq1len > 0 && seq2len > 0); ++ if (! __libc_use_alloca ((s1len + s2len) * (sizeof (int32_t) + 1))) ++ { ++ seq1.idxarr = (int32_t *) malloc ((s1len + s2len) * (sizeof (int32_t) + 1)); + +- if (position && seq1len != seq2len) ++ /* If we failed to allocate memory, we leave everything as NULL so that ++ we use the nocache version of traversal and comparison functions. */ ++ if (seq1.idxarr != NULL) + { +- result = seq1len - seq2len; +- goto free_and_return; ++ seq2.idxarr = &seq1.idxarr[s1len]; ++ seq1.rulearr = (unsigned char *) &seq2.idxarr[s2len]; ++ seq2.rulearr = &seq1.rulearr[s1len]; ++ use_malloc = true; + } + } ++ else ++ { ++ seq1.idxarr = (int32_t *) alloca (s1len * sizeof (int32_t)); ++ seq2.idxarr = (int32_t *) alloca (s2len * sizeof (int32_t)); ++ seq1.rulearr = (unsigned char *) alloca (s1len); ++ seq2.rulearr = (unsigned char *) alloca (s2len); ++ } + +- /* Now the remaining passes over the weights. We now use the +- indeces we found before. */ +- for (pass = 1; pass < nrules; ++pass) ++ int rule; ++ ++ begin_collate: ++ rule = 0; ++ /* Cache values in the first pass and if needed, use them in subsequent ++ passes. */ ++ for (int pass = 0; pass < nrules; ++pass) + { ++ seq1.idxcnt = 0; ++ seq1.idx = 0; ++ seq2.idx = 0; ++ seq1.backw_stop = ~0ul; ++ seq1.backw = ~0ul; ++ seq2.idxcnt = 0; ++ seq2.backw_stop = ~0ul; ++ seq2.backw = ~0ul; ++ ++ /* We need the elements of the strings as unsigned values since they ++ are used as indices. */ ++ seq1.us = (const USTRING_TYPE *) s1; ++ seq2.us = (const USTRING_TYPE *) s2; ++ + /* We assume that if a rule has defined `position' in one section + this is true for all of them. */ +- idx1cnt = 0; +- idx2cnt = 0; +- backw1_stop = ~0ul; +- backw2_stop = ~0ul; +- backw1 = ~0ul; +- backw2 = ~0ul; +- position = rulesets[rule1arr[0] * nrules + pass] & sort_position; ++ int position = rulesets[rule * nrules + pass] & sort_position; + + while (1) + { +- val1 = 0; +- val2 = 0; +- +- /* Get the next non-IGNOREd element for string `s1'. */ +- if (seq1len == 0) +- do +- { +- ++val1; +- +- if (backw1_stop != ~0ul) +- { +- /* The is something pushed. */ +- if (backw1 == backw1_stop) +- { +- /* The last pushed character was handled. Continue +- with forward characters. */ +- if (idx1cnt < idx1max) +- { +- idx1now = idx1cnt; +- backw1_stop = ~0ul; +- } +- else +- { +- /* Nothing anymore. The backward sequence +- ended with the last sequence in the string. */ +- idx1now = ~0ul; +- break; +- } +- } +- else +- idx1now = --backw1; +- } +- else +- { +- backw1_stop = idx1cnt; +- +- while (idx1cnt < idx1max) +- { +- if ((rulesets[rule1arr[idx1cnt] * nrules + pass] +- & sort_backward) == 0) +- /* No more backward characters to push. */ +- break; +- ++idx1cnt; +- } +- +- if (backw1_stop == idx1cnt) +- { +- /* No sequence at all or just one. */ +- if (idx1cnt == idx1max) +- /* Note that seq1len is still zero. */ +- break; +- +- backw1_stop = ~0ul; +- idx1now = idx1cnt++; +- } +- else +- /* We pushed backward sequences. */ +- idx1now = backw1 = idx1cnt - 1; +- } +- } +- while ((seq1len = weights[idx1arr[idx1now]++]) == 0); +- +- /* And the same for string `s2'. */ +- if (seq2len == 0) +- do +- { +- ++val2; +- +- if (backw2_stop != ~0ul) +- { +- /* The is something pushed. */ +- if (backw2 == backw2_stop) +- { +- /* The last pushed character was handled. Continue +- with forward characters. */ +- if (idx2cnt < idx2max) +- { +- idx2now = idx2cnt; +- backw2_stop = ~0ul; +- } +- else +- { +- /* Nothing anymore. The backward sequence +- ended with the last sequence in the string. */ +- idx2now = ~0ul; +- break; +- } +- } +- else +- idx2now = --backw2; +- } +- else +- { +- backw2_stop = idx2cnt; +- +- while (idx2cnt < idx2max) +- { +- if ((rulesets[rule2arr[idx2cnt] * nrules + pass] +- & sort_backward) == 0) +- /* No more backward characters to push. */ +- break; +- ++idx2cnt; +- } +- +- if (backw2_stop == idx2cnt) +- { +- /* No sequence at all or just one. */ +- if (idx2cnt == idx2max) +- /* Note that seq2len is still zero. */ +- break; +- +- backw2_stop = ~0ul; +- idx2now = idx2cnt++; +- } +- else +- /* We pushed backward sequences. */ +- idx2now = backw2 = idx2cnt - 1; +- } +- } +- while ((seq2len = weights[idx2arr[idx2now]++]) == 0); ++ if (__glibc_unlikely (seq1.idxarr == NULL)) ++ { ++ get_next_seq_nocache (&seq1, nrules, rulesets, weights, table, ++ extra, indirect, pass); ++ get_next_seq_nocache (&seq2, nrules, rulesets, weights, table, ++ extra, indirect, pass); ++ } ++ else if (pass == 0) ++ { ++ get_next_seq (&seq1, nrules, rulesets, weights, table, extra, ++ indirect); ++ get_next_seq (&seq2, nrules, rulesets, weights, table, extra, ++ indirect); ++ } ++ else ++ { ++ get_next_seq_cached (&seq1, nrules, pass, rulesets, weights); ++ get_next_seq_cached (&seq2, nrules, pass, rulesets, weights); ++ } + + /* See whether any or both strings are empty. */ +- if (seq1len == 0 || seq2len == 0) ++ if (seq1.len == 0 || seq2.len == 0) + { +- if (seq1len == seq2len) ++ if (seq1.len == seq2.len) + /* Both ended. So far so good, both strings are equal + at this level. */ + break; + + /* This means one string is shorter than the other. Find out + which one and return an appropriate value. */ +- result = seq1len == 0 ? -1 : 1; ++ result = seq1.len == 0 ? -1 : 1; + goto free_and_return; + } + +- /* Test for position if necessary. */ +- if (position && val1 != val2) +- { +- result = val1 - val2; +- goto free_and_return; +- } +- +- /* Compare the two sequences. */ +- do +- { +- if (weights[idx1arr[idx1now]] != weights[idx2arr[idx2now]]) +- { +- /* The sequences differ. */ +- result = (weights[idx1arr[idx1now]] +- - weights[idx2arr[idx2now]]); +- goto free_and_return; +- } +- +- /* Increment the offsets. */ +- ++idx1arr[idx1now]; +- ++idx2arr[idx2now]; +- +- --seq1len; +- --seq2len; +- } +- while (seq1len > 0 && seq2len > 0); +- +- if (position && seq1len != seq2len) +- { +- result = seq1len - seq2len; +- goto free_and_return; +- } ++ if (__glibc_unlikely (seq1.idxarr == NULL)) ++ result = do_compare_nocache (&seq1, &seq2, position, weights); ++ else ++ result = do_compare (&seq1, &seq2, position, weights); ++ if (result != 0) ++ goto free_and_return; + } ++ ++ if (__glibc_likely (seq1.rulearr != NULL)) ++ rule = seq1.rulearr[0]; ++ else ++ rule = seq1.rule; + } + + /* Free the memory if needed. */ + free_and_return: + if (use_malloc) +- free (idx1arr); ++ free (seq1.idxarr); + + return result; + } diff --git a/core/gmp/PKGBUILD b/core/gmp/PKGBUILD index 2f651d2c0..f8bff89b0 100644 --- a/core/gmp/PKGBUILD +++ b/core/gmp/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 186344 2013-05-25 03:05:31Z allan $ +# $Id: PKGBUILD 195874 2013-10-03 04:29:19Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=gmp -pkgver=5.1.2 +pkgver=5.1.3 pkgrel=1 pkgdesc="A free library for arbitrary precision arithmetic" arch=('i686' 'x86_64' 'mips64el') @@ -13,7 +13,7 @@ license=('LGPL3') options=('!libtool') install=gmp.install source=(ftp://ftp.gmplib.org/pub/gmp-${pkgver}/gmp-${pkgver}.tar.xz{,.sig}) -md5sums=('06fe2ca164221c59ce74867155cfc1ac' +md5sums=('e5fe367801ff067b923d1e6a126448aa' 'SKIP') build() { diff --git a/core/gnupg/PKGBUILD b/core/gnupg/PKGBUILD index e4038de59..412da5996 100644 --- a/core/gnupg/PKGBUILD +++ b/core/gnupg/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 193522 2013-08-21 22:25:01Z bisson $ +# $Id: PKGBUILD 195927 2013-10-05 17:40:59Z bisson $ # Maintainer: Gaetan Bisson <bisson@archlinux.org> # Contributor: Tobias Powalowski <tpowa@archlinux.org> # Contributor: Andreas Radke <andyrtr@archlinux.org> # Contributor: Judd Vinet <jvinet@zeroflux.org> pkgname=gnupg -pkgver=2.0.21 +pkgver=2.0.22 pkgrel=1 pkgdesc='Complete and free implementation of the OpenPGP standard' url='http://www.gnupg.org/' @@ -18,7 +18,7 @@ makedepends=('curl' 'libldap' 'libusb-compat') depends=('bzip2' 'libksba' 'libgcrypt' 'pth' 'libassuan' 'readline' 'pinentry' 'dirmngr') source=("ftp://ftp.gnupg.org/gcrypt/${pkgname}/${pkgname}-${pkgver}.tar.bz2"{,.sig} 'protect-tool-env.patch') -sha1sums=('5ba8cce72eb4fd1a3ac1a282d25d7c7b90d3bf26' 'SKIP' +sha1sums=('9ba9ee288e9bf813e0f1e25cbe06b58d3072d8b8' 'SKIP' '2ec97ba55ae47ff0d63bc813b8c64cb79cef11db') install=install diff --git a/core/heirloom-mailx/PKGBUILD b/core/heirloom-mailx/PKGBUILD deleted file mode 100644 index 5a26197a0..000000000 --- a/core/heirloom-mailx/PKGBUILD +++ /dev/null @@ -1,64 +0,0 @@ -# $Id: PKGBUILD 160422 2012-06-01 20:13:47Z stephane $ -# Maintainer: Stéphane Gaudreault <stephane@archlinux.org> -# Contributor: Sergej Pupykin <pupykin.s@arch@gmail.com> -# Contributor: Andreas Wagner <Andreas.Wagner@em.uni-frankfurt.de> - -pkgname=heirloom-mailx -pkgver=12.5 -pkgrel=3.1 -pkgdesc="A commandline utility for sending and receiving email" -arch=('i686' 'x86_64' 'mips64el') -url="http://heirloom.sourceforge.net/mailx.html" -license=('custom') -groups=('base') -depends=('openssl' 'krb5') -optdepends=('smtp-forwarder: for sending mail') -replaces=('mailx' 'mailx-heirloom') -provides=('mailx' 'mailx-heirloom') -conflicts=('mailx' 'mailx-heirloom') -backup=(etc/mail.rc) -source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.xz) -sha1sums=('1998dd6168a68400e533712ae7163c72b6a7c056') -options=('!makeflags') # Does not build with MAKEFLAGS=-jX, X>1 - -# source PKGBUILD && mksource -mksource() { - export CVSROOT=:pserver:anonymous@nail.cvs.sourceforge.net:/cvsroot/nail - D=nail - [ -d "${D}" ] && cvs up "${D}" || cvs co "${D}" - - _dirname=${pkgname}-${pkgver} - mv $D ${_dirname} - tar -cJv --exclude=CVS -f ${_dirname}.tar.xz ${_dirname} - rm -rf ${_dirname} -} - -build() { - cd "${srcdir}/${pkgname}-${pkgver}" - - sed -i 's|/etc/nail.rc|/etc/mail.rc|g' mailx.1 - - # For Linux and BSD, this should be set. - echo "set bsdcompat" >> nail.rc - - sed -i "s/pg/less/" cmd1.c - - echo PREFIX=/usr \ - MAILRC=/etc/mail.rc \ - SENDMAIL=/usr/sbin/sendmail \ - MAILSPOOL=/var/spool/mail \ - UCBINSTALL=/usr/bin/install > makeflags - - make `cat makeflags` IPv6=-DHAVE_IPv6_FUNCS -} - -package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" `cat makeflags` install - - # For compatibility with the old mailx program - ln -sf mailx "${pkgdir}"/usr/bin/mail - ln -sf mailx.1.gz "${pkgdir}"/usr/share/man/man1/mail.1.gz - - install -D -m0644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE -} diff --git a/core/inetutils/PKGBUILD b/core/inetutils/PKGBUILD index b8dc47e3e..d3bd5bbe1 100644 --- a/core/inetutils/PKGBUILD +++ b/core/inetutils/PKGBUILD @@ -1,35 +1,29 @@ -# $Id: PKGBUILD 187028 2013-06-03 11:15:10Z allan $ +# $Id: PKGBUILD 194664 2013-09-20 17:37:51Z eric $ # Maintainer: Eric Bélanger <eric@archlinux.org> pkgname=inetutils -pkgver=1.9.1 -pkgrel=6 +pkgver=1.9.1.341 +pkgrel=1 pkgdesc="A collection of common network programs" arch=('i686' 'x86_64' 'mips64el') url="http://www.gnu.org/software/inetutils/" license=('GPL3') groups=('base') depends=('pam') +makedepends=('help2man') backup=('etc/xinetd.d/telnet' 'etc/xinetd.d/talk' \ 'etc/xinetd.d/rlogin' 'etc/xinetd.d/rsh') options=('!emptydirs') install=inetutils.install -source=(http://ftp.gnu.org/gnu/inetutils/${pkgname}-${pkgver}.tar.gz{,.sig} \ - telnet.xinetd talk.xinetd rlogin.xinetd rsh.xinetd \ - ftpd.service dnsdomainname) -sha1sums=('86b7eb11cfdaefb1d4e9bfc10620beaf8f09bc90' +source=(ftp://ftp.archlinux.org/other/packages/inetutils/${pkgname}-${pkgver}.tar.xz{,.sig} \ + telnet.xinetd talk.xinetd rlogin.xinetd rsh.xinetd ftpd.service) +sha1sums=('eaccc1568c9cc624f6cda3a265fb92ec72c7304d' 'SKIP' '2b2dd71eb3233e5090f4c2df8abe9b4924d323f3' 'b15ab4faa9d97652e182c98c1e3a3b3cbbf6383c' 'd9b8f8aab094ecb779d0f16f21b4683ab327516f' '26763ae31b8a5be256666a0ba55746941d75d6ee' - 'e4a764828b57f1e907ec96f4ae0e0cf0d3e2e802' - 'eb952b0b9c3e3d429d8e21b110249e495f0e0e63') - -prepare() { - cd ${pkgname}-${pkgver} - sed -i 's|_GL_WARN_ON_USE (gets|//_GL_WARN_ON_USE (gets|' lib/stdio.in.h -} + 'e4a764828b57f1e907ec96f4ae0e0cf0d3e2e802') build() { cd ${pkgname}-${pkgver} @@ -41,7 +35,7 @@ build() { --enable-talk --enable-talkd \ --enable-rlogin --enable-rlogind \ --enable-rsh --enable-rshd \ - --enable-rcp --enable-hostname \ + --enable-rcp --enable-hostname --enable-dnsdomainname \ --disable-rexec --disable-rexecd \ --disable-tftp --disable-tftpd \ --disable-ping --disable-ping6 \ @@ -60,8 +54,6 @@ package() { cd ${pkgname}-${pkgver} make DESTDIR="${pkgdir}" install - install -D -m755 "${srcdir}/dnsdomainname" "${pkgdir}/usr/bin/dnsdomainname" - echo ".so man1/hostname.1" > "${pkgdir}/usr/share/man/man1/dnsdomainname.1" install -D -m644 "${srcdir}/telnet.xinetd" "${pkgdir}/etc/xinetd.d/telnet" install -D -m644 "${srcdir}/talk.xinetd" "${pkgdir}/etc/xinetd.d/talk" install -D -m644 "${srcdir}/rlogin.xinetd" "${pkgdir}/etc/xinetd.d/rlogin" diff --git a/core/inetutils/dnsdomainname b/core/inetutils/dnsdomainname deleted file mode 100644 index a1b8a8c31..000000000 --- a/core/inetutils/dnsdomainname +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -exec /usr/bin/hostname -d "$@" diff --git a/core/iw/PKGBUILD b/core/iw/PKGBUILD index fc4285ffe..66ccfb288 100644 --- a/core/iw/PKGBUILD +++ b/core/iw/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 187031 2013-06-03 11:15:15Z allan $ +# $Id: PKGBUILD 195909 2013-10-05 07:30:47Z thomas $ # Maintainer: Thomas Bächler <thomas@archlinux.org> pkgname=iw -pkgver=3.10 -pkgrel=2 +pkgver=3.11 +pkgrel=1 pkgdesc="nl80211 based CLI configuration utility for wireless devices" arch=("i686" "x86_64" 'mips64el') url="http://wireless.kernel.org/en/users/Documentation/iw" @@ -11,7 +11,7 @@ license=("GPL") depends=("libnl") makedepends=("linux-api-headers") source=(https://www.kernel.org/pub/software/network/$pkgname/$pkgname-$pkgver.tar.xz) -sha256sums=('456ee212cfb728e292667caa508a7dff902666c78579814756a3012d68d64fe9') +sha256sums=('e90327323821a8219abac56298919076c4bac6636464ca91356f02cfe40530ff') build() { cd "$srcdir"/$pkgname-$pkgver diff --git a/core/libffi/PKGBUILD b/core/libffi/PKGBUILD index c26a9d129..ffdcc73a9 100644 --- a/core/libffi/PKGBUILD +++ b/core/libffi/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 187810 2013-06-06 08:25:26Z foutrelis $ -# Maintainer: Stéphane Gaudreault <stephane@archlinux.org> +# $Id: PKGBUILD 195482 2013-10-01 05:58:29Z bpiotrowski $ +# Contributor: Stéphane Gaudreault <stephane@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=libffi pkgver=3.0.13 -pkgrel=3 -pkgdesc="A portable, high level programming interface to various calling conventions" +pkgrel=4 +pkgdesc="Portable, high level programming interface to various calling conventions" arch=('i686' 'x86_64' 'mips64el') url="http://sourceware.org/libffi/" license=('MIT') @@ -17,18 +17,18 @@ source=(ftp://sourceware.org/pub/libffi/libffi-${pkgver}.tar.gz) sha1sums=('f5230890dc0be42fb5c58fbf793da253155de106') build() { - cd "${srcdir}/${pkgname}-${pkgver}" + cd $pkgname-$pkgver ./configure --prefix=/usr --disable-static make } check() { - cd "${srcdir}/${pkgname}-${pkgver}" + cd $pkgname-$pkgver make check } package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" install - install -D -m644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE + cd $pkgname-$pkgver + make DESTDIR="$pkgdir" install + install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE } diff --git a/core/libsasl/CVE-2013-4122.patch b/core/libsasl/CVE-2013-4122.patch new file mode 100644 index 000000000..d6b9800e6 --- /dev/null +++ b/core/libsasl/CVE-2013-4122.patch @@ -0,0 +1,116 @@ +From dedad73e5e7a75d01a5f3d5a6702ab8ccd2ff40d Mon Sep 17 00:00:00 2001 +From: mancha <mancha1@hush.com> +Date: Thu, 11 Jul 2013 09:08:07 +0000 +Subject: Handle NULL returns from glibc 2.17+ crypt() + +Starting with glibc 2.17 (eglibc 2.17), crypt() fails with EINVAL +(w/ NULL return) if the salt violates specifications. Additionally, +on FIPS-140 enabled Linux systems, DES/MD5-encrypted passwords +passed to crypt() fail with EPERM (w/ NULL return). + +When using glibc's crypt(), check return value to avoid a possible +NULL pointer dereference. + +Patch by mancha1@hush.com. +--- +diff --git a/pwcheck/pwcheck_getpwnam.c b/pwcheck/pwcheck_getpwnam.c +index 4b34222..400289c 100644 +--- a/pwcheck/pwcheck_getpwnam.c ++++ b/pwcheck/pwcheck_getpwnam.c +@@ -32,6 +32,7 @@ char *userid; + char *password; + { + char* r; ++ char* crpt_passwd; + struct passwd *pwd; + + pwd = getpwnam(userid); +@@ -41,7 +42,7 @@ char *password; + else if (pwd->pw_passwd[0] == '*') { + r = "Account disabled"; + } +- else if (strcmp(pwd->pw_passwd, crypt(password, pwd->pw_passwd)) != 0) { ++ else if (!(crpt_passwd = crypt(password, pwd->pw_passwd)) || strcmp(pwd->pw_passwd, (const char *)crpt_passwd) != 0) { + r = "Incorrect password"; + } + else { +diff --git a/pwcheck/pwcheck_getspnam.c b/pwcheck/pwcheck_getspnam.c +index 2b11286..6d607bb 100644 +--- a/pwcheck/pwcheck_getspnam.c ++++ b/pwcheck/pwcheck_getspnam.c +@@ -32,13 +32,15 @@ char *userid; + char *password; + { + struct spwd *pwd; ++ char *crpt_passwd; + + pwd = getspnam(userid); + if (!pwd) { + return "Userid not found"; + } + +- if (strcmp(pwd->sp_pwdp, crypt(password, pwd->sp_pwdp)) != 0) { ++ crpt_passwd = crypt(password, pwd->sp_pwdp); ++ if (!crpt_passwd || strcmp(pwd->sp_pwdp, (const char *)crpt_passwd) != 0) { + return "Incorrect password"; + } + else { +diff --git a/saslauthd/auth_getpwent.c b/saslauthd/auth_getpwent.c +index fc8029d..d4ebe54 100644 +--- a/saslauthd/auth_getpwent.c ++++ b/saslauthd/auth_getpwent.c +@@ -77,6 +77,7 @@ auth_getpwent ( + { + /* VARIABLES */ + struct passwd *pw; /* pointer to passwd file entry */ ++ char *crpt_passwd; /* encrypted password */ + int errnum; + /* END VARIABLES */ + +@@ -105,7 +106,8 @@ auth_getpwent ( + } + } + +- if (strcmp(pw->pw_passwd, (const char *)crypt(password, pw->pw_passwd))) { ++ crpt_passwd = crypt(password, pw->pw_passwd); ++ if (!crpt_passwd || strcmp(pw->pw_passwd, (const char *)crpt_passwd)) { + if (flags & VERBOSE) { + syslog(LOG_DEBUG, "DEBUG: auth_getpwent: %s: invalid password", login); + } +diff --git a/saslauthd/auth_shadow.c b/saslauthd/auth_shadow.c +index 677131b..1988afd 100644 +--- a/saslauthd/auth_shadow.c ++++ b/saslauthd/auth_shadow.c +@@ -210,8 +210,8 @@ auth_shadow ( + RETURN("NO Insufficient permission to access NIS authentication database (saslauthd)"); + } + +- cpw = strdup((const char *)crypt(password, sp->sp_pwdp)); +- if (strcmp(sp->sp_pwdp, cpw)) { ++ cpw = crypt(password, sp->sp_pwdp); ++ if (!cpw || strcmp(sp->sp_pwdp, (const char *)cpw)) { + if (flags & VERBOSE) { + /* + * This _should_ reveal the SHADOW_PW_LOCKED prefix to an +@@ -221,10 +221,8 @@ auth_shadow ( + syslog(LOG_DEBUG, "DEBUG: auth_shadow: pw mismatch: '%s' != '%s'", + sp->sp_pwdp, cpw); + } +- free(cpw); + RETURN("NO Incorrect password"); + } +- free(cpw); + + /* + * The following fields will be set to -1 if: +@@ -286,7 +284,7 @@ auth_shadow ( + RETURN("NO Invalid username"); + } + +- if (strcmp(upw->upw_passwd, crypt(password, upw->upw_passwd)) != 0) { ++ if (!(cpw = crypt(password, upw->upw_passwd)) || (strcmp(upw->upw_passwd, (const char *)cpw) != 0)) { + if (flags & VERBOSE) { + syslog(LOG_DEBUG, "auth_shadow: pw mismatch: %s != %s", + password, upw->upw_passwd); +-- +cgit v0.9.2 diff --git a/core/libsasl/PKGBUILD b/core/libsasl/PKGBUILD index 3e1cff6ad..47e20bf0a 100644 --- a/core/libsasl/PKGBUILD +++ b/core/libsasl/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 187033 2013-06-03 11:15:22Z allan $ +# $Id: PKGBUILD 195994 2013-10-07 10:32:39Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> # This package spans multiple repositories. @@ -8,7 +8,7 @@ #pkgname=('cyrus-sasl' 'cyrus-sasl-gssapi' 'cyrus-sasl-ldap' 'cyrus-sasl-sql') pkgname=libsasl pkgver=2.1.26 -pkgrel=4 +pkgrel=6 pkgdesc="Cyrus Simple Authentication Service Layer (SASL) library" arch=('i686' 'x86_64' 'mips64el') url="http://cyrusimap.web.cmu.edu/" @@ -25,7 +25,8 @@ source=(ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-${pkgver}.tar.gz 0030-dont_use_la_files_for_opening_plugins.patch saslauthd.service saslauthd.conf.d - tmpfiles.conf) + tmpfiles.conf + CVE-2013-4122.patch) md5sums=('a7f4e5e559a0e37b3ffc438c9456e425' '79b8a5e8689989e2afd4b7bda595a7b1' 'f45aa8c42b32e0569ab3d14a83485b37' @@ -36,21 +37,27 @@ md5sums=('a7f4e5e559a0e37b3ffc438c9456e425' '8e7106f32e495e9ade69014fd1b3352a' '3499dcd610ad1ad58e0faffde2aa7a23' '49219af5641150edec288a3fdb65e7c1' - '45bb0192d2f188066240b9a66ee6365f') + '45bb0192d2f188066240b9a66ee6365f' + 'c5f0ec88c584a75c14d7f402eaeed7ef') + +prepare() { + cd cyrus-sasl-$pkgver + patch -Np1 -i ../cyrus-sasl-2.1.22-qa.patch + patch -Np1 -i ../cyrus-sasl-2.1.26-size_t.patch + patch -Np1 -i ../0010_maintainer_mode.patch + patch -Np1 -i ../0011_saslauthd_ac_prog_libtool.patch + patch -Np1 -i ../0025_ld_as_needed.patch + patch -Np1 -i ../0026_drop_krb5support_dependency.patch + patch -Np1 -i ../0030-dont_use_la_files_for_opening_plugins.patch + patch -Np1 -i ../CVE-2013-4122.patch + + sed 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' -i configure.in +} build() { export CFLAGS="$CFLAGS -fPIC" + cd cyrus-sasl-$pkgver - cd "${srcdir}/cyrus-sasl-${pkgver}" - patch -Np1 -i "${srcdir}/cyrus-sasl-2.1.22-qa.patch" - patch -Np1 -i "${srcdir}/cyrus-sasl-2.1.26-size_t.patch" - patch -Np1 -i "${srcdir}/0010_maintainer_mode.patch" - patch -Np1 -i "${srcdir}/0011_saslauthd_ac_prog_libtool.patch" - patch -Np1 -i "${srcdir}/0025_ld_as_needed.patch" - patch -Np1 -i "${srcdir}/0026_drop_krb5support_dependency.patch" - patch -Np1 -i "${srcdir}/0030-dont_use_la_files_for_opening_plugins.patch" - - sed 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' -i configure.in rm -f config/config.guess config/config.sub rm -f config/ltconfig config/ltmain.sh config/libtool.m4 rm -fr autom4te.cache @@ -111,7 +118,7 @@ package_libsasl() { depends=('openssl') conflicts=('cyrus-sasl-plugins') - cd "${srcdir}/cyrus-sasl-${pkgver}" + cd cyrus-sasl-$pkgver for dir in include lib sasldb plugins utils; do pushd ${dir} make DESTDIR="${pkgdir}" install @@ -130,7 +137,7 @@ package_cyrus-sasl() { pkgdesc="Cyrus saslauthd SASL authentication daemon" backup=('etc/conf.d/saslauthd') - cd "${srcdir}/cyrus-sasl-${pkgver}/saslauthd" + cd cyrus-sasl-$pkgver/saslauthd make DESTDIR="${pkgdir}" install install -Dm644 "${srcdir}/saslauthd.conf.d" "${pkgdir}/etc/conf.d/saslauthd" install -Dm644 "${srcdir}/saslauthd.service" "${pkgdir}/usr/lib/systemd/system/saslauthd.service" @@ -145,7 +152,7 @@ package_cyrus-sasl-gssapi() { depends=("libsasl=${pkgver}" 'krb5') replaces=('cyrus-sasl-plugins') - cd "${srcdir}/cyrus-sasl-${pkgver}/plugins" + cd cyrus-sasl-$pkgver/plugins install -m755 -d "${pkgdir}/usr/lib/sasl2" cp -a .libs/libgssapiv2.so* "${pkgdir}/usr/lib/sasl2/" cp -a .libs/libgs2.so* "${pkgdir}/usr/lib/sasl2/" @@ -159,7 +166,7 @@ package_cyrus-sasl-ldap() { depends=("libsasl=${pkgver}" 'libldap') replaces=('cyrus-sasl-plugins') - cd "${srcdir}/cyrus-sasl-${pkgver}/plugins" + cd cyrus-sasl-$pkgver/plugins install -m755 -d "${pkgdir}/usr/lib/sasl2" cp -a .libs/libldapdb.so* "${pkgdir}/usr/lib/sasl2/" @@ -172,7 +179,7 @@ package_cyrus-sasl-sql() { depends=("libsasl=${pkgver}" 'postgresql-libs' 'libmariadbclient' 'sqlite2') replaces=('cyrus-sasl-plugins') - cd "${srcdir}/cyrus-sasl-${pkgver}/plugins" + cd cyrus-sasl-$pkgver/plugins install -m755 -d "${pkgdir}/usr/lib/sasl2" cp -a .libs/libsql.so* "${pkgdir}/usr/lib/sasl2/" diff --git a/core/libusbx/0001-linux-Use-a-separate-lock-to-serialize-start-stop-vs.patch b/core/libusbx/0001-linux-Use-a-separate-lock-to-serialize-start-stop-vs.patch deleted file mode 100644 index b66abd48f..000000000 --- a/core/libusbx/0001-linux-Use-a-separate-lock-to-serialize-start-stop-vs.patch +++ /dev/null @@ -1,103 +0,0 @@ -From daf4c9fadaf8a49198c53c039bf78980dc251a4b Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 30 Jul 2013 15:57:16 +0200 -Subject: [PATCH 1/2] linux: Use a separate lock to serialize start/stop vs - hotplug events - -Using one lock for this is a bad idea, as we should not be holding any -locks used by the hotplug thread when trying to stop otherwise the stop -function may wait indefinetely in pthread_join, while the event-thread -is waiting for the lock the caller of the stop function holds. - -Using 2 separate locks for this should fix this deadlock, which has been -reported here: https://bugzilla.redhat.com/show_bug.cgi?id=985484 - -Many thanks to Chris Dickens for figuring out the cause of this deadlock! - -CC: Chris Dickens <christopher.a.dickens@gmail.com> -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - libusb/os/linux_usbfs.c | 24 +++++++++++++++++------- - libusb/version_nano.h | 2 +- - 2 files changed, 18 insertions(+), 8 deletions(-) - -diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c -index 09288af..90e23b7 100644 ---- a/libusb/os/linux_usbfs.c -+++ b/libusb/os/linux_usbfs.c -@@ -120,7 +120,9 @@ static int sysfs_has_descriptors = -1; - /* how many times have we initted (and not exited) ? */ - static volatile int init_count = 0; - --/* Serialize hotplug start/stop, scan-devices, event-thread, and poll */ -+/* Serialize hotplug start/stop */ -+usbi_mutex_static_t linux_hotplug_startstop_lock = USBI_MUTEX_INITIALIZER; -+/* Serialize scan-devices, event-thread, and poll */ - usbi_mutex_static_t linux_hotplug_lock = USBI_MUTEX_INITIALIZER; - - static int linux_start_event_monitor(void); -@@ -419,7 +421,7 @@ static int op_init(struct libusb_context *ctx) - if (sysfs_has_descriptors) - usbi_dbg("sysfs has complete descriptors"); - -- usbi_mutex_static_lock(&linux_hotplug_lock); -+ usbi_mutex_static_lock(&linux_hotplug_startstop_lock); - r = LIBUSB_SUCCESS; - if (init_count == 0) { - /* start up hotplug event handler */ -@@ -433,20 +435,20 @@ static int op_init(struct libusb_context *ctx) - linux_stop_event_monitor(); - } else - usbi_err(ctx, "error starting hotplug event monitor"); -- usbi_mutex_static_unlock(&linux_hotplug_lock); -+ usbi_mutex_static_unlock(&linux_hotplug_startstop_lock); - - return r; - } - - static void op_exit(void) - { -- usbi_mutex_static_lock(&linux_hotplug_lock); -+ usbi_mutex_static_lock(&linux_hotplug_startstop_lock); - assert(init_count != 0); - if (!--init_count) { - /* tear down event handler */ - (void)linux_stop_event_monitor(); - } -- usbi_mutex_static_unlock(&linux_hotplug_lock); -+ usbi_mutex_static_unlock(&linux_hotplug_startstop_lock); - } - - static int linux_start_event_monitor(void) -@@ -469,11 +471,19 @@ static int linux_stop_event_monitor(void) - - static int linux_scan_devices(struct libusb_context *ctx) - { -+ int ret; -+ -+ usbi_mutex_static_lock(&linux_hotplug_lock); -+ - #if defined(USE_UDEV) -- return linux_udev_scan_devices(ctx); -+ ret = linux_udev_scan_devices(ctx); - #else -- return linux_default_scan_devices(ctx); -+ ret = linux_default_scan_devices(ctx); - #endif -+ -+ usbi_mutex_static_unlock(&linux_hotplug_lock); -+ -+ return ret; - } - - static void op_hotplug_poll(void) -diff --git a/libusb/version_nano.h b/libusb/version_nano.h -index ebf41e1..34e26ff 100644 ---- a/libusb/version_nano.h -+++ b/libusb/version_nano.h -@@ -1 +1 @@ --#define LIBUSB_NANO 10774 -+#define LIBUSB_NANO 10777 --- -1.8.3.1 - diff --git a/core/libusbx/0002-hotplug-Remove-use-of-pthread_cancel-from-linux_udev.patch b/core/libusbx/0002-hotplug-Remove-use-of-pthread_cancel-from-linux_udev.patch deleted file mode 100644 index 5342fbe70..000000000 --- a/core/libusbx/0002-hotplug-Remove-use-of-pthread_cancel-from-linux_udev.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 852efb5a3e82de43cf6288e9904cb254ff636aa0 Mon Sep 17 00:00:00 2001 -From: Chris Dickens <christopher.a.dickens@gmail.com> -Date: Sat, 20 Jul 2013 13:01:41 -0700 -Subject: [PATCH 2/2] hotplug: Remove use of pthread_cancel from linux_udev - -Using pthread_cancel() presents the opportunity for deadlock, so -use a control pipe to cause the event thread to gracefully exit. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - libusb/os/linux_udev.c | 63 ++++++++++++++++++++++++++++++++++++++------------ - libusb/version_nano.h | 2 +- - 2 files changed, 49 insertions(+), 16 deletions(-) - -diff --git a/libusb/os/linux_udev.c b/libusb/os/linux_udev.c -index 5a2aadf..70f632d 100644 ---- a/libusb/os/linux_udev.c -+++ b/libusb/os/linux_udev.c -@@ -46,6 +46,7 @@ - /* udev context */ - static struct udev *udev_ctx = NULL; - static int udev_monitor_fd = -1; -+static int udev_control_pipe[2] = {-1, -1}; - static struct udev_monitor *udev_monitor = NULL; - static pthread_t linux_event_thread; - -@@ -95,14 +96,23 @@ int linux_udev_start_event_monitor(void) - goto err_free_monitor; - } - -+ r = usbi_pipe(udev_control_pipe); -+ if (r) { -+ usbi_err(NULL, "could not create udev control pipe"); -+ goto err_free_monitor; -+ } -+ - r = pthread_create(&linux_event_thread, NULL, linux_udev_event_thread_main, NULL); - if (r) { - usbi_err(NULL, "creating hotplug event thread (%d)", r); -- goto err_free_monitor; -+ goto err_close_pipe; - } - - return LIBUSB_SUCCESS; - -+err_close_pipe: -+ close(udev_control_pipe[0]); -+ close(udev_control_pipe[1]); - err_free_monitor: - udev_monitor_unref(udev_monitor); - udev_monitor = NULL; -@@ -115,14 +125,19 @@ err_free_ctx: - - int linux_udev_stop_event_monitor(void) - { -+ char dummy = 1; -+ int r; -+ - assert(udev_ctx != NULL); - assert(udev_monitor != NULL); - assert(udev_monitor_fd != -1); - -- /* Cancel the event thread. This is the only way to guarantee the -- thread exits since closing the monitor fd won't necessarily cause -- poll to return. */ -- pthread_cancel(linux_event_thread); -+ /* Write some dummy data to the control pipe and -+ * wait for the thread to exit */ -+ r = usbi_write(udev_control_pipe[1], &dummy, sizeof(dummy)); -+ if (r <= 0) { -+ usbi_warn(NULL, "udev control pipe signal failed"); -+ } - pthread_join(linux_event_thread, NULL); - - /* Release the udev monitor */ -@@ -134,27 +149,45 @@ int linux_udev_stop_event_monitor(void) - udev_unref(udev_ctx); - udev_ctx = NULL; - -+ /* close and reset control pipe */ -+ close(udev_control_pipe[0]); -+ close(udev_control_pipe[1]); -+ udev_control_pipe[0] = -1; -+ udev_control_pipe[1] = -1; -+ - return LIBUSB_SUCCESS; - } - - static void *linux_udev_event_thread_main(void *arg) - { -+ char dummy; -+ int r; - struct udev_device* udev_dev; -- struct pollfd fds = {.fd = udev_monitor_fd, -- .events = POLLIN}; -+ struct pollfd fds[] = { -+ {.fd = udev_control_pipe[0], -+ .events = POLLIN}, -+ {.fd = udev_monitor_fd, -+ .events = POLLIN}, -+ }; - - usbi_dbg("udev event thread entering."); - -- while (1 == poll(&fds, 1, -1)) { -- if (NULL == udev_monitor || POLLIN != fds.revents) { -+ while (poll(fds, 2, -1) >= 0) { -+ if (fds[0].revents & POLLIN) { -+ /* activity on control pipe, read the byte and exit */ -+ r = usbi_read(udev_control_pipe[0], &dummy, sizeof(dummy)); -+ if (r <= 0) { -+ usbi_warn(NULL, "udev control pipe read failed"); -+ } - break; - } -- -- usbi_mutex_static_lock(&linux_hotplug_lock); -- udev_dev = udev_monitor_receive_device(udev_monitor); -- if (udev_dev) -- udev_hotplug_event(udev_dev); -- usbi_mutex_static_unlock(&linux_hotplug_lock); -+ if (fds[1].revents & POLLIN) { -+ usbi_mutex_static_lock(&linux_hotplug_lock); -+ udev_dev = udev_monitor_receive_device(udev_monitor); -+ if (udev_dev) -+ udev_hotplug_event(udev_dev); -+ usbi_mutex_static_unlock(&linux_hotplug_lock); -+ } - } - - usbi_dbg("udev event thread exiting"); -diff --git a/libusb/version_nano.h b/libusb/version_nano.h -index 34e26ff..39ad7e3 100644 ---- a/libusb/version_nano.h -+++ b/libusb/version_nano.h -@@ -1 +1 @@ --#define LIBUSB_NANO 10777 -+#define LIBUSB_NANO 10778 --- -1.8.3.1 - diff --git a/core/libusbx/PKGBUILD b/core/libusbx/PKGBUILD index 8dc78efd1..a708fc92c 100644 --- a/core/libusbx/PKGBUILD +++ b/core/libusbx/PKGBUILD @@ -1,30 +1,19 @@ -# $Id: PKGBUILD 192163 2013-08-06 15:03:05Z tpowa $ +# $Id: PKGBUILD 194438 2013-09-16 12:13:08Z tpowa $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> pkgname=libusbx -pkgver=1.0.16 -pkgrel=2 +pkgver=1.0.17 +pkgrel=1 depends=('glibc' 'systemd') pkgdesc="Library that provides generic access to USB device" arch=(i686 x86_64 mips64el) url="http://libusbx.org" license=('LGPL') -source=(http://downloads.sourceforge.net/${pkgname}/releases/${pkgver}/${pkgname}-${pkgver}.tar.bz2 - 0001-linux-Use-a-separate-lock-to-serialize-start-stop-vs.patch - 0002-hotplug-Remove-use-of-pthread_cancel-from-linux_udev.patch) +source=(http://downloads.sourceforge.net/${pkgname}/releases/${pkgver}/${pkgname}-${pkgver}.tar.bz2) options=(!libtool) replaces=('libusb1' 'libusb') provides=("libusb=$pkgver") conflicts=("libusb") -md5sums=('7f5715d624cd6c26b30a317eb6c2fe5e' - 'dad04322621fe7cabd2fe631c6d9929f' - '259238c92c92f8b3df5dcad0db8aaf2f') -prepare() { - cd "${srcdir}/${pkgname}-${pkgver}" - # fix #36418 - patch -Np1 -i ../0001-linux-Use-a-separate-lock-to-serialize-start-stop-vs.patch - patch -Np1 -i ../0002-hotplug-Remove-use-of-pthread_cancel-from-linux_udev.patch -} build() { cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr --disable-static @@ -40,3 +29,4 @@ package () { cd "${srcdir}/${pkgname}-${pkgver}" make DESTDIR="${pkgdir}" install } +md5sums=('99467ca2cb81c19c4a172de9f30e7576') diff --git a/core/links/PKGBUILD b/core/links/PKGBUILD index 0a6da74b8..a15d98962 100644 --- a/core/links/PKGBUILD +++ b/core/links/PKGBUILD @@ -1,27 +1,26 @@ -# $Id: PKGBUILD 184459 2013-05-06 19:47:23Z foutrelis $ +# $Id: PKGBUILD 195212 2013-09-27 21:17:39Z eric $ # Maintainer: Eric Bélanger <eric@archlinux.org> pkgname=links -pkgver=2.7 -pkgrel=2 +pkgver=2.8 +pkgrel=1 pkgdesc="A text WWW browser, similar to Lynx" arch=('i686' 'x86_64' 'mips64el') url="http://links.twibright.com/" license=('GPL') depends=('bzip2' 'xz' 'openssl' 'gpm') -makedepends=('libtiff' 'libpng' 'libxt' 'optipng') +makedepends=('libtiff' 'libpng' 'libxt') optdepends=('libx11: for using xlinks' 'libtiff: for using xlinks' 'libpng: for using xlinks') provides=('links-g') conflicts=('links-g') replaces=('links-g') source=(http://links.twibright.com/download/${pkgname}-${pkgver}.tar.bz2 links.desktop) -sha1sums=('1e362a7e27078d630edf5868145a46247cda8cc3' +sha1sums=('a808d80d910b7d3ad86f4c5089e64f35113b69f2' 'f600e27c2a71184444f7dd07a10230aa44463a02') prepare() { cd ${pkgname}-${pkgver} sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" configure - optipng graphics/font/century_school-medium-roman-serif-vari/045e.png } build() { diff --git a/core/m4/PKGBUILD b/core/m4/PKGBUILD index 9e04d8a46..bd0d599a2 100644 --- a/core/m4/PKGBUILD +++ b/core/m4/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 183048 2013-04-17 02:02:03Z allan $ +# $Id: PKGBUILD 195164 2013-09-26 03:20:59Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Contributor: Andreas Radke <andyrtr@archlinux.org> pkgname=m4 -pkgver=1.4.16 -pkgrel=3 +pkgver=1.4.17 +pkgrel=1 pkgdesc="The GNU macro processor" arch=('i686' 'x86_64' 'mips64el') url="http://www.gnu.org/software/m4" @@ -12,21 +12,9 @@ license=('GPL3') groups=('base-devel') depends=('glibc' 'bash') install=m4.install -source=(ftp://ftp.gnu.org/gnu/m4/$pkgname-$pkgver.tar.xz{,.sig} - m4-1.4.16-readlink-einval.patch) -md5sums=('7548ec061a1ba993790159764f522d0e' - 'SKIP' - 'cea138fa9b568d06e46269611cec8dd0') - -prepare() { - cd ${srcdir}/$pkgname-$pkgver - - # glibc-2.16 compatibility - sed -i -e '/gets is a/d' lib/stdio.in.h - - # patch testsuite failure with newer kernels - patch -Np1 -i $srcdir/m4-1.4.16-readlink-einval.patch -} +source=(ftp://ftp.gnu.org/gnu/m4/$pkgname-$pkgver.tar.xz{,.sig}) +md5sums=('12a3c829301a4fd6586a57d3fcf196dc' + 'SKIP') build() { cd ${srcdir}/$pkgname-$pkgver diff --git a/core/mdadm/PKGBUILD b/core/mdadm/PKGBUILD index 8c8d6aa83..b30feff04 100644 --- a/core/mdadm/PKGBUILD +++ b/core/mdadm/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 186140 2013-05-21 09:11:15Z tpowa $ +# $Id: PKGBUILD 194030 2013-09-10 10:15:14Z tpowa $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> # Contributor: Judd Vinet <jvinet@zeroflux.org> pkgname=mdadm -pkgver=3.2.6 -pkgrel=4 +pkgver=3.3 +pkgrel=1 pkgdesc="A tool for managing/monitoring Linux md device arrays, also known as Software RAID" arch=(i686 x86_64 'mips64el') license=('GPL') @@ -18,22 +18,19 @@ source=(ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/mdadm-$pkgver.tar.bz2 mdadm_hook mdadm_udev_install mdadm.service - disable-werror.patch - mdadm-fix-udev-rules.patch) + disable-werror.patch) replaces=('raidtools') -md5sums=('3e255dc71e5144bbcb872788ca647267' +md5sums=('8ac04259cdd74b4566c3b6dea9414b57' '5a37c112aa07dccdde62f9fa5b888607' 'af2f73f0094ebee66f503ca4710c7142' 'fbfb7d07efcbaf5dc61af424c5f6e352' 'b6b0bfd6487c99264578630616dfe5eb' 'eb1786b18fa4d13cfd7b71d6b05cfb4f' - '4ad87b74a4bc9a34621280abe0e0c3e4' - '6c76f2f261c1c3397c7290633f0a9acc') + '599745ed2bec4489e83991cff89c46ee') prepare() { cd $srcdir/$pkgname-$pkgver patch -Np0 -i ../disable-werror.patch - patch -p1 -i ../mdadm-fix-udev-rules.patch } build() { diff --git a/core/mdadm/disable-werror.patch b/core/mdadm/disable-werror.patch index 50a33f19d..a80a41456 100644 --- a/core/mdadm/disable-werror.patch +++ b/core/mdadm/disable-werror.patch @@ -3,9 +3,9 @@ @@ -42,7 +42,7 @@ CC = $(CROSS_COMPILE)gcc - CXFLAGS = -ggdb + CXFLAGS ?= -ggdb -CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter +CWFLAGS = -Wall -Wstrict-prototypes -Wextra -Wno-unused-parameter ifdef WARN_UNUSED - CWFLAGS += -Wp,-D_FORTIFY_SOURCE=2 -O + CWFLAGS += -Wp,-D_FORTIFY_SOURCE=2 -O3 endif diff --git a/core/openssh/PKGBUILD b/core/openssh/PKGBUILD index c3d65deb3..7f64d3b89 100644 --- a/core/openssh/PKGBUILD +++ b/core/openssh/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 186025 2013-05-20 14:49:38Z bisson $ +# $Id: PKGBUILD 194510 2013-09-17 03:04:46Z bisson $ # Maintainer: Gaetan Bisson <bisson@archlinux.org> # Contributor: Aaron Griffin <aaron@archlinux.org> # Contributor: judd <jvinet@zeroflux.org> pkgname=openssh -pkgver=6.2p2 +pkgver=6.3p1 pkgrel=1 pkgdesc='Free version of the SSH connectivity tools' url='http://www.openssh.org/portable.html' @@ -20,10 +20,10 @@ source=("ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/${pkgname}-${pkgver} 'sshd.service' 'sshd.socket' 'sshd.pam') -sha1sums=('c2b4909eba6f5ec6f9f75866c202db47f3b501ba' +sha1sums=('70845ca79474258cab29dbefae13d93e41a83ccb' '6df5be396f8c593bb511a249a1453294d18a01a6' '6a0ff3305692cf83aca96e10f3bb51e1c26fccda' - '2d87de52a6b2f764180f9f67cb9747392784b4a5' + 'ec49c6beba923e201505f5669cea48cad29014db' 'e12fa910b26a5634e5a6ac39ce1399a132cf6796' 'd93dca5ebda4610ff7647187f8928a3de28703f3') @@ -66,7 +66,7 @@ package() { make DESTDIR="${pkgdir}" install - ln -sf ssh.1.gz "${pkgdir}"/usr/share/man/man1/slogin.1 + ln -sf ssh.1.gz "${pkgdir}"/usr/share/man/man1/slogin.1.gz install -Dm644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENCE" install -Dm644 ../sshdgenkeys.service "${pkgdir}"/usr/lib/systemd/system/sshdgenkeys.service diff --git a/core/openssh/sshd.service b/core/openssh/sshd.service index 349bde59d..55ed95322 100644 --- a/core/openssh/sshd.service +++ b/core/openssh/sshd.service @@ -2,6 +2,7 @@ Description=OpenSSH Daemon Wants=sshdgenkeys.service After=sshdgenkeys.service +After=network.target [Service] ExecStart=/usr/bin/sshd -D diff --git a/core/popt/PKGBUILD b/core/popt/PKGBUILD index 1f65bae8d..99df35922 100644 --- a/core/popt/PKGBUILD +++ b/core/popt/PKGBUILD @@ -1,13 +1,9 @@ -# $Id: PKGBUILD 186305 2013-05-24 13:04:43Z stephane $ -# Maintainer: Stéphane Gaudreault <stephane@archlinux.org> -# Contributor: Andrea Scarpino <andrea@archlinux.org> -# Contributor: dorphell <dorphell@archlinux.org> -# Contributor: Judd Vinet <jvinet@zeroflux.org> -# Contributor: John Proctor <jproctor@prium.net> +# $Id: PKGBUILD 195971 2013-10-06 19:11:33Z eric $ +# Maintainer: Eric Bélanger <eric@archlinux.org> pkgname=popt pkgver=1.16 -pkgrel=6 +pkgrel=7 pkgdesc="A commandline option parser" arch=('i686' 'x86_64' 'mips64el') url="http://rpm5.org" @@ -19,7 +15,6 @@ sha1sums=('cfe94a15a2404db85858a81ff8de27c8ff3e235e') build() { cd "${srcdir}/${pkgname}-${pkgver}" - ./configure --prefix=/usr --disable-static make } @@ -27,6 +22,5 @@ build() { package() { cd "${srcdir}/${pkgname}-${pkgver}" make DESTDIR="${pkgdir}" install - install -Dm644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE } diff --git a/core/procps-ng/PKGBUILD b/core/procps-ng/PKGBUILD index 3cd906d29..9a0322d1a 100644 --- a/core/procps-ng/PKGBUILD +++ b/core/procps-ng/PKGBUILD @@ -1,36 +1,29 @@ -# $Id: PKGBUILD 188912 2013-06-25 10:40:52Z bisson $ +# $Id: PKGBUILD 194509 2013-09-17 03:04:40Z bisson $ # Maintainer: Gaetan Bisson <bisson@archlinux.org> # Contributor: Eric Bélanger <eric@archlinux.org> pkgname=procps-ng pkgver=3.3.8 -pkgrel=2 +pkgrel=3 pkgdesc='Utilities for monitoring your system and its processes' url='http://gitorious.org/procps' license=('GPL' 'LGPL') arch=('i686' 'x86_64' 'mips64el') -groups=('base') depends=('ncurses') -backup=('etc/sysctl.conf') -source=("${pkgname}-${pkgver}.tar.gz::http://gitorious.org/procps/procps/archive-tarball/v${pkgver}" - 'sysctl.conf') -sha1sums=('63aed46ba4b5b05698beb25d2aa3eee6779d7f45' - 'bc4e929a0ddcdcd627e8d15d30abcf185aa33fab') +source=("http://downloads.sourceforge.net/project/${pkgname}/Production/${pkgname}-${pkgver}.tar.xz") +sha1sums=('4fa6a373f969989a9e490df5eb49a2df62eca19a') + +groups=('base') conflicts=('procps') provides=('procps') replaces=('procps') options=('!libtool') - -prepare() { - cd "${srcdir}/procps-procps" - echo ${pkgver} > .tarball-version - ./autogen.sh -} +install=install build() { - cd "${srcdir}/procps-procps" + cd "${srcdir}/${pkgname}-${pkgver}" ./configure \ --prefix=/usr \ --exec-prefix=/ \ @@ -43,9 +36,8 @@ build() { } package() { - cd "${srcdir}/procps-procps" + cd "${srcdir}/${pkgname}-${pkgver}" make DESTDIR="${pkgdir}" install - install -D -m644 ../sysctl.conf "${pkgdir}/etc/sysctl.conf" # provided by util-linux rm "${pkgdir}/usr/bin/kill" diff --git a/core/procps-ng/install b/core/procps-ng/install new file mode 100644 index 000000000..2e6546ecc --- /dev/null +++ b/core/procps-ng/install @@ -0,0 +1,14 @@ +post_upgrade() { + if [[ $(vercmp $2 3.3.8-3) = -1 ]]; then + cat <<EOF + +==> The file /etc/sysctl.conf has been removed from this +==> package, as all its settings are now kernel defaults. + +==> If you had customized it, you need to rename it as +==> /etc/sysctl.d/99-sysctl.conf since from version 207 on +==> systemd only applies settings from /etc/sysctl.d/* . + +EOF + fi +} diff --git a/core/procps-ng/sysctl.conf b/core/procps-ng/sysctl.conf deleted file mode 100644 index fae2c6082..000000000 --- a/core/procps-ng/sysctl.conf +++ /dev/null @@ -1,38 +0,0 @@ -# Configuration file for runtime kernel parameters. -# See sysctl.conf(5) for more information. - -# Have the CD-ROM close when you use it, and open when you are done. -#dev.cdrom.autoclose = 1 -#dev.cdrom.autoeject = 1 - -# Protection from the SYN flood attack. -net.ipv4.tcp_syncookies = 1 - -# See evil packets in your logs. -#net.ipv4.conf.all.log_martians = 1 - -# Never accept redirects or source routes (these are only useful for routers). -#net.ipv4.conf.all.accept_redirects = 0 -#net.ipv4.conf.all.accept_source_route = 0 -#net.ipv6.conf.all.accept_redirects = 0 -#net.ipv6.conf.all.accept_source_route = 0 - -# Disable packet forwarding. -net.ipv4.ip_forward = 0 -net.ipv6.conf.all.forwarding = 0 - -# Tweak the port range used for outgoing connections. -#net.ipv4.ip_local_port_range = 32768 61000 - -# Tweak those values to alter disk syncing and swap behavior. -#vm.vfs_cache_pressure = 100 -#vm.laptop_mode = 0 -#vm.swappiness = 60 - -# Tweak how the flow of kernel messages is throttled. -#kernel.printk_ratelimit_burst = 10 -#kernel.printk_ratelimit = 5 - -# Reboot 600 seconds after kernel panic or oops. -#kernel.panic_on_oops = 1 -#kernel.panic = 600 diff --git a/core/s-nail/PKGBUILD b/core/s-nail/PKGBUILD new file mode 100644 index 000000000..3a9653c82 --- /dev/null +++ b/core/s-nail/PKGBUILD @@ -0,0 +1,53 @@ +# $Id: PKGBUILD 195886 2013-10-03 16:52:03Z bisson $ +# Maintainer: Gaetan Bisson <bisson@archlinux.org> +# Contributor: Stéphane Gaudreault <stephane@archlinux.org> +# Contributor: Sergej Pupykin <pupykin.s@arch@gmail.com> +# Contributor: Andreas Wagner <Andreas.Wagner@em.uni-frankfurt.de> + +pkgname=s-nail +pkgver=14.4.3 +pkgrel=1 +pkgdesc='Mail processing system with a command syntax reminiscent of ed' +url='http://sourceforge.net/projects/s-nail/' +license=('custom:BSD') +arch=('i686' 'x86_64') +depends=('openssl') +optdepends=('smtp-forwarder: for sending mail') +source=("http://downloads.sourceforge.net/project/${pkgname}/${pkgname}-${pkgver//./_}.tar.gz") +sha1sums=('39fdade9b622a6addc5e70a5d929b0bc5ef49d00') + +groups=('base') +backup=('etc/mail.rc') +replaces=('mailx' 'mailx-heirloom' 'heirloom-mailx') +provides=('mailx' 'mailx-heirloom' 'heirloom-mailx') +conflicts=('mailx' 'mailx-heirloom' 'heirloom-mailx') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + make \ + PREFIX=/usr \ + SYSCONFDIR=/etc \ + MANDIR=/usr/share/man \ + MAILSPOOL=/var/spool/mail \ + SID= NAIL=mail \ + CFLAGS="$CFLAGS $CPPFLAGS" \ + DESTDIR="${pkgdir}" \ + all +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make \ + PREFIX=/usr \ + SYSCONFDIR=/etc \ + MANDIR=/usr/share/man \ + MAILSPOOL=/var/spool/mail \ + SID= NAIL=mail \ + CFLAGS="$CFLAGS $CPPFLAGS" \ + DESTDIR="${pkgdir}" \ + install + + ln -sf mail "${pkgdir}"/usr/bin/mailx + ln -sf mail.1.gz "${pkgdir}"/usr/share/man/man1/mailx.1.gz + install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING" +} diff --git a/core/sudo/PKGBUILD b/core/sudo/PKGBUILD index 6e4193324..4d5450f9d 100644 --- a/core/sudo/PKGBUILD +++ b/core/sudo/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 188591 2013-06-16 17:14:27Z foutrelis $ +# $Id: PKGBUILD 195898 2013-10-04 13:41:05Z foutrelis $ # Maintainer: Evangelos Foutras <evangelos@foutrelis.com> # Contributor: Allan McRae <allan@archlinux.org> # Contributor: Tom Newsom <Jeepster@gmx.co.uk> pkgname=sudo -_sudover=1.8.7 +_sudover=1.8.8 pkgver=${_sudover/p/.p} pkgrel=1 pkgdesc="Give certain users the ability to run some commands as root" @@ -17,7 +17,7 @@ backup=('etc/sudoers' 'etc/pam.d/sudo') options=('!libtool') source=(http://www.sudo.ws/sudo/dist/$pkgname-$_sudover.tar.gz{,.sig} sudo.pam) -sha256sums=('39626cf3d48c4fd5a9139a2627d42bfefac7ce47f470bdba3aeb4e3d7c49566a' +sha256sums=('9f911c1e9297fb8006deb52fa81197a8d06b9d54e70672f723c467ecae992fc9' 'SKIP' 'e7de79d2c73f2b32b20a8e797e54777a2bf19788ec03e48decd6c15cd93718ae') diff --git a/core/systemd/0001-fix-lingering-references-to-var-lib-backlight-random.patch b/core/systemd/0001-fix-lingering-references-to-var-lib-backlight-random.patch new file mode 100644 index 000000000..49b960c81 --- /dev/null +++ b/core/systemd/0001-fix-lingering-references-to-var-lib-backlight-random.patch @@ -0,0 +1,54 @@ +From 6c8c92fef72cf6a7ef7109a424ef82dbdc4f6952 Mon Sep 17 00:00:00 2001 +From: Dave Reisner <dreisner@archlinux.org> +Date: Wed, 2 Oct 2013 07:46:24 -0400 +Subject: [PATCH] fix lingering references to /var/lib/{backlight,random-seed} + +This should have been part of ef5bfcf668e6029faa78534dfe. +--- + man/systemd-backlight@.service.xml | 2 +- + man/systemd-random-seed.service.xml | 2 +- + units/systemd-backlight@.service.in | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/man/systemd-backlight@.service.xml b/man/systemd-backlight@.service.xml +index 2b73625..4318964 100644 +--- a/man/systemd-backlight@.service.xml ++++ b/man/systemd-backlight@.service.xml +@@ -58,7 +58,7 @@ + is a service that restores the display backlight + brightness at early-boot and saves it at shutdown. On + disk, the backlight brightness is stored in +- <filename>/var/lib/backlight/</filename>. Note that by ++ <filename>/var/lib/systemd/backlight/</filename>. Note that by + default, only firmware backlight devices are + saved/restored.</para> + </refsect1> +diff --git a/man/systemd-random-seed.service.xml b/man/systemd-random-seed.service.xml +index 8cd14b7..e5cd037 100644 +--- a/man/systemd-random-seed.service.xml ++++ b/man/systemd-random-seed.service.xml +@@ -61,7 +61,7 @@ + for details. Saving/restoring the random seed across + boots increases the amount of available entropy early + at boot. On disk the random seed is stored in +- <filename>/var/lib/random-seed</filename>.</para> ++ <filename>/var/lib/systemd/random-seed</filename>.</para> + </refsect1> + + <refsect1> +diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in +index b0e75db..5caa5d5 100644 +--- a/units/systemd-backlight@.service.in ++++ b/units/systemd-backlight@.service.in +@@ -9,7 +9,7 @@ + Description=Load/Save Screen Backlight Brightness of %I + Documentation=man:systemd-backlight@.service(8) + DefaultDependencies=no +-RequiresMountsFor=/var/lib/backlight ++RequiresMountsFor=/var/lib/systemd/backlight + Conflicts=shutdown.target + After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service + Before=sysinit.target shutdown.target +-- +1.8.4 + diff --git a/core/systemd/0001-journald-DO-recalculate-the-ACL-mask-but-only-if-it-.patch b/core/systemd/0001-journald-DO-recalculate-the-ACL-mask-but-only-if-it-.patch deleted file mode 100644 index 372ecebff..000000000 --- a/core/systemd/0001-journald-DO-recalculate-the-ACL-mask-but-only-if-it-.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 23ad4dd8844c582929115a11ed2830a1371568d6 Mon Sep 17 00:00:00 2001 -From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> -Date: Tue, 28 May 2013 20:45:34 +0200 -Subject: [PATCH] journald: DO recalculate the ACL mask, but only if it doesn't - exist - -Since 11ec7ce, journald isn't setting the ACLs properly anymore if -the files had no ACLs to begin with: acl_set_fd fails with EINVAL. - -An ACL with ACL_USER or ACL_GROUP entries but no ACL_MASK entry is -invalid, so make sure a mask exists before trying to set the ACL. ---- - src/journal/journald-server.c | 6 ++++-- - src/shared/acl-util.c | 28 ++++++++++++++++++++++++++++ - src/shared/acl-util.h | 1 + - 3 files changed, 33 insertions(+), 2 deletions(-) - -diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c -index b717b92..da5b725 100644 ---- a/src/journal/journald-server.c -+++ b/src/journal/journald-server.c -@@ -227,9 +227,11 @@ void server_fix_perms(Server *s, JournalFile *f, uid_t uid) { - } - } - -- /* We do not recalculate the mask here, so that the fchmod() mask above stays intact. */ -+ /* We do not recalculate the mask unconditionally here, -+ * so that the fchmod() mask above stays intact. */ - if (acl_get_permset(entry, &permset) < 0 || -- acl_add_perm(permset, ACL_READ) < 0) { -+ acl_add_perm(permset, ACL_READ) < 0 || -+ calc_acl_mask_if_needed(&acl) < 0) { - log_warning("Failed to patch ACL on %s, ignoring: %m", f->path); - goto finish; - } -diff --git a/src/shared/acl-util.c b/src/shared/acl-util.c -index 48bb12f..fb04e49 100644 ---- a/src/shared/acl-util.c -+++ b/src/shared/acl-util.c -@@ -69,6 +69,34 @@ int acl_find_uid(acl_t acl, uid_t uid, acl_entry_t *entry) { - return 0; - } - -+int calc_acl_mask_if_needed(acl_t *acl_p) { -+ acl_entry_t i; -+ int found; -+ -+ assert(acl_p); -+ -+ for (found = acl_get_entry(*acl_p, ACL_FIRST_ENTRY, &i); -+ found > 0; -+ found = acl_get_entry(*acl_p, ACL_NEXT_ENTRY, &i)) { -+ -+ acl_tag_t tag; -+ -+ if (acl_get_tag_type(i, &tag) < 0) -+ return -errno; -+ -+ if (tag == ACL_MASK) -+ return 0; -+ } -+ -+ if (found < 0) -+ return -errno; -+ -+ if (acl_calc_mask(acl_p) < 0) -+ return -errno; -+ -+ return 0; -+} -+ - int search_acl_groups(char*** dst, const char* path, bool* belong) { - acl_t acl; - -diff --git a/src/shared/acl-util.h b/src/shared/acl-util.h -index 23090d9..36ef490 100644 ---- a/src/shared/acl-util.h -+++ b/src/shared/acl-util.h -@@ -24,4 +24,5 @@ - #include <stdbool.h> - - int acl_find_uid(acl_t acl, uid_t uid, acl_entry_t *entry); -+int calc_acl_mask_if_needed(acl_t *acl_p); - int search_acl_groups(char*** dst, const char* path, bool* belong); --- -1.8.3 - diff --git a/core/systemd/0001-utmp-turn-systemd-update-utmp-shutdown.service-into-.patch b/core/systemd/0001-utmp-turn-systemd-update-utmp-shutdown.service-into-.patch deleted file mode 100644 index 84cce7121..000000000 --- a/core/systemd/0001-utmp-turn-systemd-update-utmp-shutdown.service-into-.patch +++ /dev/null @@ -1,255 +0,0 @@ -From 3f92e4b4b61042391bd44de4dceb18177df0dd57 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering <lennart@poettering.net> -Date: Thu, 16 May 2013 00:19:03 +0200 -Subject: [PATCH] utmp: turn systemd-update-utmp-shutdown.service into a normal - runtime service - -With this change systemd-update-utmp-shutdown.service is replaced by -systemd-update-utmp.service which is started at boot and stays around -until shutdown. This allows us to properly order the unit against both -/var/log and auditd. - -https://bugzilla.redhat.com/show_bug.cgi?id=853104 -https://bugs.freedesktop.org/show_bug.cgi?id=64365 ---- - Makefile-man.am | 12 ++++++------ - Makefile.am | 8 ++++---- - ....service.xml => systemd-update-utmp.service.xml} | 16 ++++++++-------- - src/update-utmp/update-utmp.c | 2 +- - units/.gitignore | 2 +- - units/systemd-update-utmp-runlevel.service.in | 8 +++++--- - units/systemd-update-utmp-shutdown.service.in | 19 ------------------- - units/systemd-update-utmp.service.in | 21 +++++++++++++++++++++ - 8 files changed, 46 insertions(+), 42 deletions(-) - rename man/{systemd-update-utmp-runlevel.service.xml => systemd-update-utmp.service.xml} (82%) - delete mode 100644 units/systemd-update-utmp-shutdown.service.in - create mode 100644 units/systemd-update-utmp.service.in - -diff --git a/Makefile-man.am b/Makefile-man.am -index 7d62094..5888158 100644 ---- a/Makefile-man.am -+++ b/Makefile-man.am -@@ -72,7 +72,7 @@ MANPAGES += \ - man/systemd-tmpfiles.8 \ - man/systemd-tty-ask-password-agent.1 \ - man/systemd-udevd.service.8 \ -- man/systemd-update-utmp-runlevel.service.8 \ -+ man/systemd-update-utmp.service.8 \ - man/systemd.1 \ - man/systemd.automount.5 \ - man/systemd.device.5 \ -@@ -191,7 +191,7 @@ MANPAGES_ALIAS += \ - man/systemd-udevd-control.socket.8 \ - man/systemd-udevd-kernel.socket.8 \ - man/systemd-udevd.8 \ -- man/systemd-update-utmp-shutdown.service.8 \ -+ man/systemd-update-utmp-runlevel.service.8 \ - man/systemd-update-utmp.8 \ - man/systemd-user.conf.5 - man/SD_ALERT.3: man/sd-daemon.3 -@@ -289,8 +289,8 @@ man/systemd-tmpfiles-setup.service.8: man/systemd-tmpfiles.8 - man/systemd-udevd-control.socket.8: man/systemd-udevd.service.8 - man/systemd-udevd-kernel.socket.8: man/systemd-udevd.service.8 - man/systemd-udevd.8: man/systemd-udevd.service.8 --man/systemd-update-utmp-shutdown.service.8: man/systemd-update-utmp-runlevel.service.8 --man/systemd-update-utmp.8: man/systemd-update-utmp-runlevel.service.8 -+man/systemd-update-utmp-runlevel.service.8: man/systemd-update-utmp.service.8 -+man/systemd-update-utmp.8: man/systemd-update-utmp.service.8 - man/systemd-user.conf.5: man/systemd-system.conf.5 - man/SD_ALERT.html: man/sd-daemon.html - $(html-alias) -@@ -577,10 +577,10 @@ man/systemd-udevd-kernel.socket.html: man/systemd-udevd.service.html - man/systemd-udevd.html: man/systemd-udevd.service.html - $(html-alias) - --man/systemd-update-utmp-shutdown.service.html: man/systemd-update-utmp-runlevel.service.html -+man/systemd-update-utmp-runlevel.service.html: man/systemd-update-utmp.service.html - $(html-alias) - --man/systemd-update-utmp.html: man/systemd-update-utmp-runlevel.service.html -+man/systemd-update-utmp.html: man/systemd-update-utmp.service.html - $(html-alias) - - man/systemd-user.conf.html: man/systemd-system.conf.html -diff --git a/Makefile.am b/Makefile.am -index 8d8139c..4c5e6fc 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -417,8 +417,8 @@ nodist_systemunit_DATA = \ - units/systemd-initctl.service \ - units/systemd-shutdownd.service \ - units/systemd-remount-fs.service \ -+ units/systemd-update-utmp.service \ - units/systemd-update-utmp-runlevel.service \ -- units/systemd-update-utmp-shutdown.service \ - units/systemd-tmpfiles-setup-dev.service \ - units/systemd-tmpfiles-setup.service \ - units/systemd-tmpfiles-clean.service \ -@@ -463,8 +463,8 @@ EXTRA_DIST += \ - units/systemd-initctl.service.in \ - units/systemd-shutdownd.service.in \ - units/systemd-remount-fs.service.in \ -+ units/systemd-update-utmp.service.in \ - units/systemd-update-utmp-runlevel.service.in \ -- units/systemd-update-utmp-shutdown.service.in \ - units/systemd-tmpfiles-setup-dev.service.in \ - units/systemd-tmpfiles-setup.service.in \ - units/systemd-tmpfiles-clean.service.in \ -@@ -4070,8 +4070,8 @@ RUNLEVEL4_TARGET_WANTS += \ - RUNLEVEL5_TARGET_WANTS += \ - systemd-update-utmp-runlevel.service - endif --SHUTDOWN_TARGET_WANTS += \ -- systemd-update-utmp-shutdown.service -+SYSINIT_TARGET_WANTS += \ -+ systemd-update-utmp.service - LOCAL_FS_TARGET_WANTS += \ - systemd-remount-fs.service \ - systemd-fsck-root.service \ -diff --git a/man/systemd-update-utmp-runlevel.service.xml b/man/systemd-update-utmp.service.xml -similarity index 82% -rename from man/systemd-update-utmp-runlevel.service.xml -rename to man/systemd-update-utmp.service.xml -index 867b958..846fc95 100644 ---- a/man/systemd-update-utmp-runlevel.service.xml -+++ b/man/systemd-update-utmp.service.xml -@@ -19,10 +19,10 @@ - You should have received a copy of the GNU Lesser General Public License - along with systemd; If not, see <http://www.gnu.org/licenses/>. - --> --<refentry id="systemd-update-utmp-runlevel.service"> -+<refentry id="systemd-update-utmp.service"> - - <refentryinfo> -- <title>systemd-update-utmp-runlevel.service</title> -+ <title>systemd-update-utmp.service</title> - <productname>systemd</productname> - - <authorgroup> -@@ -36,21 +36,21 @@ - </refentryinfo> - - <refmeta> -- <refentrytitle>systemd-update-utmp-runlevel.service</refentrytitle> -+ <refentrytitle>systemd-update-utmp.service</refentrytitle> - <manvolnum>8</manvolnum> - </refmeta> - - <refnamediv> -+ <refname>systemd-update-utmp.service</refname> - <refname>systemd-update-utmp-runlevel.service</refname> -- <refname>systemd-update-utmp-shutdown.service</refname> - <refname>systemd-update-utmp</refname> -- <refpurpose>Write audit and utmp updates at runlevel -+ <refpurpose>Write audit and utmp updates at bootup, runlevel - changes and shutdown</refpurpose> - </refnamediv> - - <refsynopsisdiv> -+ <para><filename>systemd-update-utmp.service</filename></para> - <para><filename>systemd-update-utmp-runlevel.service</filename></para> -- <para><filename>systemd-update-utmp-shutdown.service</filename></para> - <para><filename>/usr/lib/systemd/systemd-update-utmp</filename></para> - </refsynopsisdiv> - -@@ -60,8 +60,8 @@ - <para><filename>systemd-update-utmp-runlevel.service</filename> - is a service that writes SysV runlevel changes to utmp - and wtmp, as well as the audit logs, as they -- occur. <filename>systemd-update-utmp-shutdown.service</filename> -- does the same for shut-down requests.</para> -+ occur. <filename>systemd-update-utmp.service</filename> -+ does the same for system reboots and shut-down requests.</para> - </refsect1> - - <refsect1> -diff --git a/src/update-utmp/update-utmp.c b/src/update-utmp/update-utmp.c -index 9184025..202aa98 100644 ---- a/src/update-utmp/update-utmp.c -+++ b/src/update-utmp/update-utmp.c -@@ -104,7 +104,7 @@ static int get_current_runlevel(Context *c) { - { '3', SPECIAL_RUNLEVEL3_TARGET }, - { '4', SPECIAL_RUNLEVEL4_TARGET }, - { '2', SPECIAL_RUNLEVEL2_TARGET }, -- { 'S', SPECIAL_RESCUE_TARGET }, -+ { '1', SPECIAL_RESCUE_TARGET }, - }; - const char - *interface = "org.freedesktop.systemd1.Unit", -diff --git a/units/systemd-update-utmp-runlevel.service.in b/units/systemd-update-utmp-runlevel.service.in -index 27fae2c..99783e2 100644 ---- a/units/systemd-update-utmp-runlevel.service.in -+++ b/units/systemd-update-utmp-runlevel.service.in -@@ -7,12 +7,14 @@ - - [Unit] - Description=Update UTMP about System Runlevel Changes --Documentation=man:systemd-update-utmp-runlevel.service(8) man:utmp(5) -+Documentation=man:systemd-update-utmp.service(8) man:utmp(5) - DefaultDependencies=no - RequiresMountsFor=/var/log/wtmp --After=systemd-remount-fs.service systemd-tmpfiles-setup.service auditd.service -+Conflicts=shutdown.target -+Requisite=systemd-update-utmp.service -+After=systemd-update-utmp.service - After=runlevel1.target runlevel2.target runlevel3.target runlevel4.target runlevel5.target --Before=final.target -+Before=shutdown.target - - [Service] - Type=oneshot -diff --git a/units/systemd-update-utmp-shutdown.service.in b/units/systemd-update-utmp-shutdown.service.in -deleted file mode 100644 -index aa93562..0000000 ---- a/units/systemd-update-utmp-shutdown.service.in -+++ /dev/null -@@ -1,19 +0,0 @@ --# This file is part of systemd. --# --# systemd is free software; you can redistribute it and/or modify it --# under the terms of the GNU Lesser General Public License as published by --# the Free Software Foundation; either version 2.1 of the License, or --# (at your option) any later version. -- --[Unit] --Description=Update UTMP about System Shutdown --Documentation=man:systemd-update-utmp-runlevel.service(8) man:utmp(5) --DefaultDependencies=no --RequiresMountsFor=/var/log/wtmp --After=systemd-remount-fs.service systemd-tmpfiles-setup.service auditd.service --After=systemd-update-utmp-runlevel.service --Before=final.target -- --[Service] --Type=oneshot --ExecStart=@rootlibexecdir@/systemd-update-utmp shutdown -diff --git a/units/systemd-update-utmp.service.in b/units/systemd-update-utmp.service.in -new file mode 100644 -index 0000000..e7c20a5 ---- /dev/null -+++ b/units/systemd-update-utmp.service.in -@@ -0,0 +1,21 @@ -+# This file is part of systemd. -+# -+# systemd is free software; you can redistribute it and/or modify it -+# under the terms of the GNU Lesser General Public License as published by -+# the Free Software Foundation; either version 2.1 of the License, or -+# (at your option) any later version. -+ -+[Unit] -+Description=Update UTMP about System Reboot/Shutdown -+Documentation=man:systemd-update-utmp.service(8) man:utmp(5) -+DefaultDependencies=no -+RequiresMountsFor=/var/log/wtmp -+Conflicts=shutdown.target -+After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service systemd-tmpfiles-setup.service auditd.service -+Before=sysinit.target shutdown.target -+ -+[Service] -+Type=oneshot -+RemainAfterExit=yes -+ExecStart=@rootlibexecdir@/systemd-update-utmp reboot -+ExecStop=@rootlibexecdir@/systemd-update-utmp shutdown --- -1.8.2.3 - diff --git a/core/systemd/PKGBUILD b/core/systemd/PKGBUILD index ad695a979..e25d29d5f 100644 --- a/core/systemd/PKGBUILD +++ b/core/systemd/PKGBUILD @@ -3,36 +3,28 @@ pkgbase=systemd pkgname=('systemd' 'systemd-sysvcompat') -pkgver=204 -pkgrel=3 +pkgver=208 +pkgrel=1 arch=('i686' 'x86_64' 'mips64el') url="http://www.freedesktop.org/wiki/Software/systemd" -license=('GPL2' 'LGPL2.1' 'MIT') makedepends=('acl' 'cryptsetup' 'dbus-core' 'docbook-xsl' 'gobject-introspection' 'gperf' 'gtk-doc' 'intltool' 'kmod' 'libcap' 'libgcrypt' 'libmicrohttpd' 'libxslt' 'linux-api-headers' 'pam' 'python' 'quota-tools' 'xz') -options=('!libtool' '!distcc') +options=('!libtool' 'strip' 'debug' '!distcc') source=("http://www.freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz" - 0001-utmp-turn-systemd-update-utmp-shutdown.service-into-.patch - 0001-journald-DO-recalculate-the-ACL-mask-but-only-if-it-.patch 'initcpio-hook-udev' + 'initcpio-install-systemd' 'initcpio-install-udev' - 'initcpio-install-timestamp') -md5sums=('a07619bb19f48164fbf0761d12fd39a8' - '7f39f9fde1ff7b48293ed1e3d0a6c213' - '66e3162856ded8eb7dc7383405c6e0d6' - 'e99e9189aa2f6084ac28b8ddf605aeb8' - 'fb37e34ea006c79be1c54cbb0f803414' - 'df69615503ad293c9ddf9d8b7755282d') + '0001-fix-lingering-references-to-var-lib-backlight-random.patch') +md5sums=('df64550d92afbffb4f67a434193ee165' + '29245f7a240bfba66e2b1783b63b6b40' + '8b68b0218a3897d4d37a6ccf47914774' + 'bde43090d4ac0ef048e3eaee8202a407' + '1b191c4e7a209d322675fd199e3abc66') prepare() { cd "$pkgname-$pkgver" - - patch -Np1 <"$srcdir/0001-utmp-turn-systemd-update-utmp-shutdown.service-into-.patch" - - patch -Np1 <"$srcdir/0001-journald-DO-recalculate-the-ACL-mask-but-only-if-it-.patch" - - autoreconf + patch -Np1 -i ../0001-fix-lingering-references-to-var-lib-backlight-random.patch } build() { @@ -41,7 +33,6 @@ build() { [ "$CARCH" = "mips64el" ] && CFLAGS+=" -mno-plt" ./configure \ - --enable-static \ --libexecdir=/usr/lib \ --localstatedir=/var \ --sysconfdir=/etc \ @@ -63,6 +54,7 @@ check() { package_systemd() { pkgdesc="system and service manager" + license=('GPL2' 'LGPL2.1' 'MIT') depends=('acl' 'bash' 'dbus-core' 'glib2' 'kbd' 'kmod' 'hwids' 'libcap' 'libgcrypt' 'pam' 'util-linux' 'xz') provides=("libsystemd=$pkgver" 'nss-myhostname' "systemd-tools=$pkgver" "udev=$pkgver" @@ -79,11 +71,13 @@ package_systemd() { etc/dbus-1/system.d/org.freedesktop.hostname1.conf etc/dbus-1/system.d/org.freedesktop.login1.conf etc/dbus-1/system.d/org.freedesktop.locale1.conf + etc/dbus-1/system.d/org.freedesktop.machine1.conf etc/dbus-1/system.d/org.freedesktop.timedate1.conf + etc/systemd/bootchart.conf + etc/systemd/journald.conf + etc/systemd/logind.conf etc/systemd/system.conf etc/systemd/user.conf - etc/systemd/logind.conf - etc/systemd/journald.conf etc/udev/udev.conf) install="systemd.install" @@ -101,7 +95,7 @@ package_systemd() { rmdir "$pkgdir/etc/systemd/system/getty.target.wants" # get rid of RPM macros - rm -r "$pkgdir/etc/rpm" + rm -r "$pkgdir/usr/lib/rpm" # add back tmpfiles.d/legacy.conf install -m644 "systemd-$pkgver/tmpfiles.d/legacy.conf" "$pkgdir/usr/lib/tmpfiles.d" @@ -112,19 +106,28 @@ package_systemd() { s#GROUP="cdrom"#GROUP="optical"#g' "$pkgdir"/usr/lib/udev/rules.d/*.rules # add mkinitcpio hooks + install -Dm644 "$srcdir/initcpio-install-systemd" "$pkgdir/usr/lib/initcpio/install/systemd" install -Dm644 "$srcdir/initcpio-install-udev" "$pkgdir/usr/lib/initcpio/install/udev" install -Dm644 "$srcdir/initcpio-hook-udev" "$pkgdir/usr/lib/initcpio/hooks/udev" - install -Dm644 "$srcdir/initcpio-install-timestamp" "$pkgdir/usr/lib/initcpio/install/timestamp" + + # ensure proper permissions for /var/log/journal + chown root:systemd-journal "$pkgdir/var/log/journal" + chmod 2755 "$pkgdir/var/log/journal" ### split out manpages for sysvcompat rm -rf "$srcdir/_sysvcompat" install -dm755 "$srcdir"/_sysvcompat/usr/share/man/man8/ mv "$pkgdir"/usr/share/man/man8/{telinit,halt,reboot,poweroff,runlevel,shutdown}.8 \ "$srcdir"/_sysvcompat/usr/share/man/man8 + + # include MIT license, since it's technically custom + install -Dm755 "$srcdir/$pkgname-$pkgver/LICENSE.MIT" \ + "$pkgdir/usr/share/licenses/systemd/LICENSE.MIT" } package_systemd-sysvcompat() { pkgdesc="sysvinit compat for systemd" + license=('GPL2') groups=('base') conflicts=('sysvinit') depends=('sysvinit-tools' 'systemd') diff --git a/core/systemd/initcpio-hook-udev b/core/systemd/initcpio-hook-udev index 75da7e4a8..0bc32e008 100644 --- a/core/systemd/initcpio-hook-udev +++ b/core/systemd/initcpio-hook-udev @@ -1,7 +1,9 @@ #!/usr/bin/ash run_earlyhook() { - udevd --daemon --resolve-names=never + kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/kmod.conf + systemd-tmpfiles --prefix=/dev --create + /usr/lib/systemd/systemd-udevd --daemon --resolve-names=never udevd_running=1 } diff --git a/core/systemd/initcpio-install-systemd b/core/systemd/initcpio-install-systemd new file mode 100644 index 000000000..2c59074a7 --- /dev/null +++ b/core/systemd/initcpio-install-systemd @@ -0,0 +1,159 @@ +#!/bin/bash + +strip_quotes() { + local len=${#1} quotes=$'[\'"]' str=${!1} + + if [[ ${str:0:1} = ${str: -1} && ${str:0:1} = $quotes ]]; then + declare -g "$1=${str:1:-1}" + fi +} + +add_udev_rule() { + # Add an udev rules file to the initcpio image. Dependencies on binaries + # will be discovered and added. + # $1: path to rules file (or name of rules file) + + local rules= rule= key= value= binary= + + rules=$(PATH=/usr/lib/udev/rules.d:/lib/udev/rules.d type -P "$1") + if [[ -z $rules ]]; then + # complain about not found rules + return 1 + fi + + add_file "$rules" + + while IFS=, read -ra rule; do + # skip empty lines, comments + [[ -z $rule || $rule = @(+([[:space:]])|#*) ]] && continue + + for pair in "${rule[@]}"; do + IFS=' =' read -r key value <<< "$pair" + case $key in + RUN@({program}|+)|IMPORT{program}|ENV{REMOVE_CMD}) + strip_quotes 'value' + # just take the first word as the binary name + binary=${value%% *} + if [[ ${binary:0:1} != '/' ]]; then + binary=$(PATH=/usr/lib/udev:/lib/udev type -P "$binary") + fi + add_binary "$binary" + ;; + esac + done + done <"$rules" +} + +add_systemd_unit() { + # Add a systemd unit file to the initcpio image. Hard dependencies on binaries + # and other unit files will be discovered and added. + # $1: path to rules file (or name of rules file) + + local unit= rule= entry= key= value= binary= dep= + + unit=$(PATH=/usr/lib/systemd/system:/lib/systemd/system type -P "$1") + if [[ -z $unit ]]; then + # complain about not found unit file + return 1 + fi + + add_file "$unit" + + while IFS='=' read -r key values; do + read -ra values <<< "$values" + + case $key in + Requires|OnFailure) + # only add hard dependencies (not Wants) + map add_systemd_unit "${values[@]}" + ;; + Exec*) + # don't add binaries unless they are required + if [[ ${values[0]:0:1} != '-' ]]; then + add_binary "${values[0]}" + fi + ;; + esac + + done <"$unit" + + # preserve reverse soft dependency + for dep in {/usr,}/lib/systemd/system/*.wants/${unit##*/}; do + if [[ -L $dep ]]; then + add_symlink "$dep" + fi + done + + # add hard dependencies + if [[ -d $unit.requires ]]; then + for dep in "$unit".requires/*; do + add_systemd_unit ${dep##*/} + done + fi +} + +build() { + local rules unit + + # from base + add_binary /bin/mount + add_binary /usr/bin/kmod /usr/bin/modprobe + + # systemd + add_binary /usr/lib/systemd/systemd /init + add_binary /usr/bin/systemd-tmpfiles + + # generate sysroot.mount and sysroot-usr.mount + add_file "/usr/lib/systemd/system-generators/systemd-fstab-generator" + + # udev rules and systemd units + map add_udev_rule "$rules" \ + 50-udev-default.rules \ + 60-persistent-storage.rules \ + 64-btrfs.rules \ + 80-drivers.rules \ + 99-systemd.rules \ + + map add_systemd_unit \ + ctrl-alt-del.target \ + initrd-cleanup.service \ + initrd-fs.target \ + initrd-parse-etc.service \ + initrd-root-fs.target \ + initrd-switch-root.service \ + initrd-switch-root.target \ + initrd-udevadm-cleanup-db.service \ + initrd.target \ + kmod-static-nodes.service \ + sockets.target \ + systemd-fsck@.service \ + systemd-journald.service \ + systemd-tmpfiles-setup-dev.service \ + systemd-udev-trigger.service \ + systemd-udevd-control.socket \ + systemd-udevd-kernel.socket \ + systemd-udevd.service + + add_symlink "/usr/lib/systemd/system/default.target" "initrd.target" + + # libdbus needs the passwd info of the root user + # TODO: make sure this is no longer necessary when systemctl moves to sd-bus + add_file "/etc/nsswitch.conf" + add_file "/etc/passwd" + add_binary "$(readlink -f /usr/lib/libnss_files.so)" + + # udev wants /etc/group since it doesn't launch with --resolve-names=never + add_file "/etc/group" +} + +help() { + cat <<HELPEOF +This will install a basic systemd setup in your initramfs, and is meant to +replace the 'base', 'usr', 'udev' and 'timestamp' hooks. Other hooks with runtime +components will need to be ported, and will not work as intended. You also may +wish to still include the 'base' hook (before this hook) to ensure that a +rescue shell exists on your initramfs. +HELPEOF +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/core/systemd/initcpio-install-timestamp b/core/systemd/initcpio-install-timestamp deleted file mode 100644 index 259cc705b..000000000 --- a/core/systemd/initcpio-install-timestamp +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -build() { - add_binary /usr/lib/systemd/systemd-timestamp /usr/bin/systemd-timestamp -} - -help() { - cat <<HELPEOF -Provides support for RD_TIMESTAMP in early userspace, which can be read by a -program such as systemd-analyze to determine boot time. -HELPEOF -} - -# vim: set ft=sh ts=4 sw=4 et: diff --git a/core/systemd/initcpio-install-udev b/core/systemd/initcpio-install-udev index 15124b8f7..419c19e58 100644 --- a/core/systemd/initcpio-install-udev +++ b/core/systemd/initcpio-install-udev @@ -4,8 +4,9 @@ build() { local rules tool add_file "/etc/udev/udev.conf" - add_binary /usr/lib/systemd/systemd-udevd /usr/bin/udevd + add_binary /usr/lib/systemd/systemd-udevd add_binary /usr/bin/udevadm + add_binary /usr/bin/systemd-tmpfiles for rules in 50-udev-default.rules 60-persistent-storage.rules 64-btrfs.rules 80-drivers.rules; do add_file "/usr/lib/udev/rules.d/$rules" diff --git a/core/systemd/systemd.install b/core/systemd/systemd.install index 508b384c3..f22536360 100644 --- a/core/systemd/systemd.install +++ b/core/systemd/systemd.install @@ -38,11 +38,24 @@ mask_net_naming() { fi } +_208_changes() { + chown root:systemd-journal var/log/journal + chmod 2755 var/log/journal + + if [ -e var/lib/backlight ] && [ ! -e var/lib/systemd/backlight ]; then + mv -T var/lib/backlight var/lib/systemd/backlight + fi + + if [ -e var/lib/random-seed ] && [ ! -e var/lib/systemd/random-seed ]; then + mv -T var/lib/random-seed var/lib/systemd/random-seed + fi +} + post_install() { post_common # enable getty@tty1 by default, but don't track the file - systemctl enable getty@.service + systemctl enable getty@tty1.service echo ":: Append 'init=/usr/lib/systemd/systemd' to your kernel command line in your" echo " bootloader to replace sysvinit with systemd, or install systemd-sysvcompat" @@ -87,6 +100,21 @@ post_upgrade() { printf '==> The /bin/systemd symlink has been removed. Any references in your\n' printf ' bootloader (or elsewhere) must be updated to /usr/lib/systemd/systemd.\n' fi + + if [ "$(vercmp 205-1 "$2")" -eq 1 ]; then + printf '==> systemd 205 restructures the cgroup hierarchy and changes internal\n' + printf ' protocols. You should reboot at your earliest convenience.\n' + fi + + if [ "$(vercmp 206-1 "$2")" -eq 1 ]; then + printf '==> The "timestamp" hook for mkinitcpio no longer exists. If you used\n' + printf ' this hook, you must remove it from /etc/mkinitcpio.conf. A "systemd"\n' + printf ' hook has been added which provides this functionality, and more.\n' + fi + + if [ "$(vercmp 208-1 "$2")" -eq 1 ]; then + _208_changes + fi } # vim:set ts=2 sw=2 et: diff --git a/core/tar/PKGBUILD b/core/tar/PKGBUILD index 4febb901d..d4aafe120 100644 --- a/core/tar/PKGBUILD +++ b/core/tar/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 187045 2013-06-03 11:15:39Z allan $ +# $Id: PKGBUILD 195996 2013-10-07 10:34:06Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Contributor: Andreas Radke <andyrtr@archlinux.org> pkgname=tar -pkgver=1.26 -pkgrel=4 +pkgver=1.27 +pkgrel=1 pkgdesc="Utility used to store, backup, and transport files" arch=('i686' 'x86_64' 'mips64el') url="http://www.gnu.org/software/tar/tar.html" @@ -13,20 +13,9 @@ groups=('base') depends=('glibc' 'sh') options=('!emptydirs') install=tar.install -source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig} - tar.1 - gnulib-no-gets.patch) -md5sums=('0ced6f20b9fa1bea588005b5ad4b52c1' - '6618d5fe7785e138c27d7d6a24e998b2' - 'e97e7343f4e23724b4c48bca2f033e38' - '4408365a66887d65f4c8d1f416fb9d9f') - -prepare() { - cd ${srcdir}/$pkgname-$pkgver - - # fix build failure with glibc-2.16 - sed -i -e '/gets is a/d' gnu/stdio.in.h -} +source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig}) +md5sums=('3484fc42b7a82b82f2305b2971aa0e56' + 'SKIP') build() { cd ${srcdir}/$pkgname-$pkgver @@ -42,6 +31,4 @@ check() { package() { cd ${srcdir}/$pkgname-$pkgver make DESTDIR=${pkgdir} install - - install -Dm644 ${srcdir}/tar.1 ${pkgdir}/usr/share/man/man1/tar.1 } diff --git a/core/tar/tar.1 b/core/tar/tar.1 deleted file mode 100644 index 75bbcd38c..000000000 --- a/core/tar/tar.1 +++ /dev/null @@ -1,367 +0,0 @@ -.\" generated by script on Fri Aug 19 16:19:30 2011 -.Dd Aug 19, 2011 -.Dt TAR 1 -.Sh NAME -.Nm tar -.Nd The GNU version of the tar archiving utility -.Sh SYNOPSIS -.Nm tar -.Oo Fl Oc Cm A Fl \-catenate \-concatenate Cm \||\| c Fl \-create Cm \||\| d Fl \-diff \-compare Cm \||\| Fl \-delete Cm \||\| r Fl \-append Cm \||\| t Fl \-list Cm \||\| Fl \-test\-label Cm \||\| u Fl \-update Cm \||\| x Fl \-extract \-get -.Op Ar options -.Op Ar pathname ... -.Sh DESCRIPTION -.Nm Tar -stores and extracts files from a tape or disk archive. -.Pp -The first argument to -tar -should be a function; either one of the letters -.Cm Acdrtux , -or one of the long function names. -A function letter need not be prefixed with ``\-'', and may be combined -with other single-letter options. -A long function name must be prefixed with -.Cm \\-\\- . -Some options take a parameter; with the single-letter form -these must be given as separate arguments. -With the long form, they may be given by appending -.Cm = Ns Ar value -to the option. -.Sh FUNCTION LETTERS -Main operation mode: -.Bl -tag -width flag -.It Fl A , Fl \-catenate , Fl \-concatenate -append tar files to an archive -.It Fl c , Fl \-create -create a new archive -.It Fl d , Fl \-diff , Fl \-compare -find differences between archive and file system -.It Fl \-delete -delete from the archive (not on mag tapes!) -.It Fl r , Fl \-append -append files to the end of an archive -.It Fl t , Fl \-list -list the contents of an archive -.It Fl \-test\-label -test the archive volume label and exit -.It Fl u , Fl \-update -only append files newer than copy in archive -.It Fl x , Fl \-extract , Fl \-get -extract files from an archive -.El -.Sh OTHER OPTIONS -Operation modifiers: -.Bl -tag -width flag -.It \-[0\-7][lmh] -specify drive and density -.It Fl a , Fl \-auto\-compress -use archive suffix to determine the compression program -.It Fl \-add\-file Ns \= Ns Ar FILE -add given FILE to the archive (useful if its name starts with a dash) -.It Fl \-anchored -patterns match file name start -.It Fl \-no\-anchored -patterns match after any `/' (default for exclusion) -.It Fl \-atime\-preserve -preserve access times on dumped files, either by restoring the times -.It Fl \-no\-auto\-compress -do not use archive suffix to determine the compression program -.It Fl b , Fl \-blocking\-factor Ar BLOCKS -BLOCKS x 512 bytes per record -.It Fl B , Fl \-read\-full\-records -reblock as we read (for 4.2BSD pipes) -.It Fl \-backup -backup before removal, choose version CONTROL -.It Fl C , Fl \-directory Ar DIR -change to directory DIR -.It Fl \-check\-device -check device numbers when creating incremental archives (default) -.It Fl \-no\-check\-device -do not check device numbers when creating incremental archives -.It Fl \-checkpoint -display progress messages every NUMBERth record (default 10) -.It Fl \-checkpoint\-action Ns \= Ns Ar ACTION -execute ACTION on each checkpoint -.It Fl \-delay\-directory\-restore -delay setting modification times and permissions of extracted -.It Fl \-no\-delay\-directory\-restore -cancel the effect of --delay-directory-restore option -.It Fl \-exclude Ns \= Ns Ar PATTERN -exclude files, given as a PATTERN -.It Fl \-exclude\-backups -exclude backup and lock files -.It Fl \-exclude\-caches -exclude contents of directories containing CACHEDIR.TAG, -.It Fl \-exclude\-caches\-all -exclude directories containing CACHEDIR.TAG -.It Fl \-exclude\-caches\-under -exclude everything under directories containing CACHEDIR.TAG -.It Fl \-exclude\-tag Ns \= Ns Ar FILE -exclude contents of directories containing FILE, except -.It Fl \-exclude\-tag\-all Ns \= Ns Ar FILE -exclude directories containing FILE -.It Fl \-exclude\-tag\-under Ns \= Ns Ar FILE -exclude everything under directories containing FILE -.It Fl \-exclude\-vcs -exclude version control system directories -.It Fl f , Fl \-file Ar ARCHIVE -use archive file or device ARCHIVE -.It Fl F , Fl \-info\-script , Fl \-new\-volume\-script Ar NAME -run script at end of each tape (implies -M) -.It Fl \-force\-local -archive file is local even if it has a colon -.It Fl \-full\-time -print file time to its full resolution -.It Fl g , Fl \-listed\-incremental Ar FILE -handle new GNU-format incremental backup -.It Fl G , Fl \-incremental -handle old GNU-format incremental backup -.It Fl \-group Ns \= Ns Ar NAME -force NAME as group for added files -.It Fl h , Fl \-dereference -follow symlinks; archive and dump the files they point to -.It Fl H , Fl \-format Ar FORMAT -create archive of the given formatFORMAT is one of the following: -.Bl -tag -width flag -.It Fl \-format=gnu -GNU tar 1.13.x format -.It Fl \-format=oldgnu -GNU format as per tar <= 1.12 -.It Fl \-format=pax -POSIX 1003.1-2001 (pax) format -.It Fl \-format=posix -same as pax -.It Fl \-format=ustar -POSIX 1003.1-1988 (ustar) format -.It Fl \-format=v7 -old V7 tar format -.El -.It Fl \-hard\-dereference -follow hard links; archive and dump the files they refer to -.It Fl i , Fl \-ignore\-zeros -ignore zeroed blocks in archive (means EOF) -.It Fl I , Fl \-use\-compress\-program Ar PROG -filter through PROG (must accept -d) -.It Fl \-ignore\-case -ignore case -.It Fl \-no\-ignore\-case -case sensitive matching (default) -.It Fl \-ignore\-command\-error -ignore exit codes of children -.It Fl \-no\-ignore\-command\-error -treat non-zero exit codes of children as error -.It Fl \-ignore\-failed\-read -do not exit with nonzero on unreadable files -.It Fl \-index\-file Ns \= Ns Ar FILE -send verbose output to FILE -.It Fl j , Fl \-bzip2 - -.It Fl J , Fl \-xz - -.It Fl k , Fl \-keep\-old\-files -don't replace existing files when extracting -.It Fl K , Fl \-starting\-file Ar MEMBER-NAME -begin at member MEMBER-NAME in the archive -.It Fl \-keep\-newer\-files -don't replace existing files that are newer than their archive copies -.It Fl l , Fl \-check\-links -print a message if not all links are dumped -.It Fl L , Fl \-tape\-length Ar NUMBER -change tape after writing NUMBER x 1024 bytes -.It Fl \-level Ns \= Ns Ar NUMBER -dump level for created listed-incremental archive -.It Fl \-lzip - -.It Fl \-lzma - -.It Fl \-lzop - -.It Fl m , Fl \-touch -don't extract file modified time -.It Fl M , Fl \-multi\-volume -create/list/extract multi-volume archive -.It Fl \-mode Ns \= Ns Ar CHANGES -force (symbolic) mode CHANGES for added files -.It Fl \-mtime Ns \= Ns Ar DATE-OR-FILE -set mtime for added files from DATE-OR-FILE -.It Fl n , Fl \-seek -archive is seekable -.It Fl N , Fl \-newer , Fl \-after\-date Ar DATE-OR-FILE -only store files newer than DATE-OR-FILE -.It Fl \-newer\-mtime Ns \= Ns Ar DATE -compare date and time when data changed only -.It Fl \-null --T reads null-terminated names, disable -C -.It Fl \-no\-null -disable the effect of the previous --null option -.It Fl \-numeric\-owner -always use numbers for user/group names -.It Fl O , Fl \-to\-stdout -extract files to standard output -.It Fl \-occurrence -process only the NUMBERth occurrence of each file in the archive; -.It Fl \-old\-archive , Fl \-portability -same as --format=v7 -.It Fl \-one\-file\-system -stay in local file system when creating archive -.It Fl \-overwrite -overwrite existing files when extracting -.It Fl \-overwrite\-dir -overwrite metadata of existing directories when extracting (default) -.It Fl \-no\-overwrite\-dir -preserve metadata of existing directories -.It Fl \-owner Ns \= Ns Ar NAME -force NAME as owner for added files -.It Fl p , Fl \-preserve\-permissions , Fl \-same\-permissions -extract information about file permissions (default for superuser) -.It Fl P , Fl \-absolute\-names -don't strip leading `/'s from file names -.It Fl \-pax\-option Ns \= Ns Ar keyword[[:]=value][,keyword[[:]=value]]... -control pax keywords -.It Fl \-posix -same as --format=posix -.It Fl \-preserve -same as both -p and -s -.It Fl \-quote\-chars Ns \= Ns Ar STRING -additionally quote characters from STRING -.It Fl \-no\-quote\-chars Ns \= Ns Ar STRING -disable quoting for characters from STRING -.It Fl \-quoting\-style Ns \= Ns Ar STYLE -set name quoting style; see below for valid STYLE values -.It Fl R , Fl \-block\-number -show block number within archive with each message -.It Fl \-record\-size Ns \= Ns Ar NUMBER -NUMBER of bytes per record, multiple of 512 -.It Fl \-recursion -recurse into directories (default) -.It Fl \-no\-recursion -avoid descending automatically in directories -.It Fl \-recursive\-unlink -empty hierarchies prior to extracting directory -.It Fl \-remove\-files -remove files after adding them to the archive -.It Fl \-restrict -disable use of some potentially harmful options -.It Fl \-rmt\-command Ns \= Ns Ar COMMAND -use given rmt COMMAND instead of rmt -.It Fl \-rsh\-command Ns \= Ns Ar COMMAND -use remote COMMAND instead of rsh -.It Fl s , Fl \-preserve\-order , Fl \-same\-order -sort names to extract to match archive -.It Fl S , Fl \-sparse -handle sparse files efficiently -.It Fl \-same\-owner -try extracting files with the same ownership as exists in the archive (default for superuser) -.It Fl \-no\-same\-owner -extract files as yourself (default for ordinary users) -.It Fl \-no\-same\-permissions -apply the user's umask when extracting permissions from the archive (default for ordinary users) -.It Fl \-no\-seek -archive is not seekable -.It Fl \-show\-defaults -show tar defaults -.It Fl \-show\-omitted\-dirs -when listing or extracting, list each directory that does not match search criteria -.It Fl \-show\-transformed\-names , Fl \-show\-stored\-names -show file or archive names after transformation -.It Fl \-sparse\-version Ns \= Ns Ar MAJOR[.MINOR] -set version of the sparse format to use (implies --sparse) -.It Fl \-strip\-components Ns \= Ns Ar NUMBER -strip NUMBER leading components from file names on extraction -.It Fl \-suffix Ns \= Ns Ar STRING -backup before removal, override usual suffix ('~' unless overridden by environment variable SIMPLE_BACKUP_SUFFIX) -.It Fl T , Fl \-files\-from Ar FILE -get names to extract or create from FILE -.It Fl \-to\-command Ns \= Ns Ar COMMAND -pipe extracted files to another program -.It Fl \-totals -print total bytes after processing the archive; -.It Fl \-transform , Fl \-xform Ar EXPRESSION -use sed replace EXPRESSION to transform file names -.It Fl U , Fl \-unlink\-first -remove each file prior to extracting over it -.It Fl \-unquote -unquote filenames read with -T (default) -.It Fl \-no\-unquote -do not unquote filenames read with -T -.It Fl \-utc -print file modification times in UTC -.It Fl v , Fl \-verbose -verbosely list files processed -.It Fl V , Fl \-label Ar TEXT -create archive with volume name TEXT; at list/extract time, use TEXT as a globbing pattern for volume name -.It Fl \-volno\-file Ns \= Ns Ar FILE -use/update the volume number in FILE -.It Fl w , Fl \-interactive , Fl \-confirmation -ask for confirmation for every action -.It Fl W , Fl \-verify -attempt to verify the archive after writing it -.It Fl \-warning Ns \= Ns Ar KEYWORD -warning control -.It Fl \-wildcards -use wildcards (default for exclusion) -.It Fl \-wildcards\-match\-slash -wildcards match `/' (default for exclusion) -.It Fl \-no\-wildcards\-match\-slash -wildcards do not match `/' -.It Fl \-no\-wildcards -verbatim string matching -.It Fl X , Fl \-exclude\-from Ar FILE -exclude patterns listed in FILE -.It Fl z , Fl \-gzip , Fl \-gunzip Fl \-ungzip - -.It Fl Z , Fl \-compress , Fl \-uncompress - -.El -.Sh ENVIRONMENT -The behavior of tar is controlled by the following environment variables, -among others: -.Bl -tag -width Ds -.It Ev SIMPLE_BACKUP_SUFFIX -Backup prefix to use when extracting, if -.Fl \-suffix -is not specified. -The backup suffix defaults to `~' if neither is specified. -.It Ev TAR_OPTIONS -Options to prepend to those specified on the command line, separated by -whitespace. Embedded backslashes may be used to escape whitespace or -backslashes within an option. -.It Ev TAPE -Device or file to use for the archive if -.Fl \-file -is not specified. -If this environment variable is unset, use stdin or stdout instead. -.It Ev TAR_LONGLINK_100 -.El -.Sh EXAMPLES -Create archive.tar from files foo and bar. -.Bd -literal -offset indent -compact -tar \-cf archive.tar foo bar -.Ed -List all files in archive.tar verbosely. -.Bd -literal -offset indent -compact -tar \-tvf archive.tar -.Ed -Extract all files from archive.tar. -.Bd -literal -offset indent -compact -tar \-xf archive.tar -.Ed -.Sh SEE ALSO -.\" libarchive -.Xr tar 5 , -.\" man-pages -.Xr symlink 7 , -.Xr rmt 8 -.Sh HISTORY -The -.Nm tar -command appeared in -.At v7 . -.Sh BUGS -The GNU folks, in general, abhor man pages, and create info documents instead. -Unfortunately, the info document describing tar is licensed under the GFDL with -invariant cover texts, which makes it impossible to include any text -from that document in this man page. -Most of the text in this document was automatically extracted from the usage -text in the source. -It may not completely describe all features of the program. diff --git a/core/texinfo/PKGBUILD b/core/texinfo/PKGBUILD index 244086cc7..927b8666e 100644 --- a/core/texinfo/PKGBUILD +++ b/core/texinfo/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 180067 2013-03-15 22:55:32Z allan $ +# $Id: PKGBUILD 195842 2013-10-02 00:09:47Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Contributor: Tom Newsom <Jeepster@gmx.co.uk> pkgname=texinfo -pkgver=5.1 +pkgver=5.2 pkgrel=1 pkgdesc="Utilities to work with and produce manuals, ASCII text, and on-line documentation from a single source file" arch=('i686' 'x86_64' 'mips64el') @@ -13,8 +13,8 @@ groups=('base' 'base-devel') depends=('ncurses' 'findutils' 'gzip' 'perl' 'sh') install=texinfo.install source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.xz{,.sig}) -md5sums=('52ee905a3b705020d2a1b6ec36d53ca6' - '65c8c95799ea5905e03cee5825d3553f') +md5sums=('cb489df8a7ee9d10a236197aefdb32c5' + 'SKIP') build() { cd ${srcdir}/${pkgname}-${pkgver} diff --git a/core/texinfo/texinfo.install b/core/texinfo/texinfo.install index f1554e4f4..1f220c572 100644 --- a/core/texinfo/texinfo.install +++ b/core/texinfo/texinfo.install @@ -1,5 +1,5 @@ infodir=usr/share/info -filelist=(info.info info-stnd.info texinfo texinfo-1 texinfo-2 texinfo-3) +filelist=(info.info info-stnd.info texinfo.info{,-1,-2,-3}) post_install() { # Scan *all* info files on install diff --git a/core/traceroute/PKGBUILD b/core/traceroute/PKGBUILD index 76a48f766..478435c44 100644 --- a/core/traceroute/PKGBUILD +++ b/core/traceroute/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 175126 2013-01-14 12:47:17Z stephane $ -# Maintainer: Stéphane Gaudreault <stephane@archlinux.org> +# $Id: PKGBUILD 195972 2013-10-06 19:11:34Z eric $ +# Maintainer: Eric Bélanger <eric@archlinux.org> pkgname=traceroute pkgver=2.0.19 -pkgrel=1 +pkgrel=2 pkgdesc="Tracks the route taken by packets over an IP network" arch=('i686' 'x86_64' 'mips64el') url="http://traceroute.sourceforge.net/" |