# Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/pkg_preinst.eblit,v 1.10 2013/04/10 17:36:54 vapier Exp $ # Simple test to make sure our new glibc isnt completely broken. # Make sure we don't test with statically built binaries since # they will fail. Also, skip if this glibc is a cross compiler. glibc_sanity_check() { cd / #228809 # We enter ${D} so to avoid trouble if the path contains # special characters; for instance if the path contains the # colon character (:), then the linker will try to split it # and look for the libraries in an unexpected place. This can # lead to unsafe code execution if the generated prefix is # within a world-writable directory. # (e.g. /var/tmp/portage:${HOSTNAME}) pushd "${D}"/$(get_libdir) >/dev/null local x striptest for x in date env ls true uname ; do x=$(type -p ${x}) [[ -z ${x} ]] && continue striptest=$(LC_ALL="C" file -L ${x} 2>/dev/null) || continue [[ ${striptest} == *"statically linked"* ]] && continue ./ld-*.so --library-path . ${x} > /dev/null \ || die "simple run test (${x}) failed" done popd >/dev/null } eblit-glibc-pkg_preinst() { # nothing to do if just installing headers just_headers && return # prepare /etc/ld.so.conf.d/ for files mkdir -p "${ROOT}"/etc/ld.so.conf.d # Default /etc/hosts.conf:multi to on for systems with small dbs. if [[ $(wc -l < "${ROOT}"/etc/hosts) -lt 1000 ]] ; then sed -i '/^multi off/s:off:on:' "${D}"/etc/host.conf elog "Defaulting /etc/host.conf:multi to on" fi [[ ${ROOT} != "/" ]] && return 0 [[ -d ${D}/$(get_libdir) ]] || return 0 glibc_sanity_check }