slackbuilds_ponce/system/gdm/gdm.SlackBuild
mancha 5e7435b792 system/gdm: Fix crypt() usage with glibc-2.17+
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 or MD5
encrypted passwords passed to crypt() fail with EPERM (w/
NULL return).

Slackware-current has transitioned to glibc 2.17 and as you
might be aware from reading my posts on LQ, I have dedicated
time to fixing userland which does not adequately handle
crypt() returns given the new behavior.

gdm is negatively affected and my attached patch (against
gdm 2.20.11) addresses this.

This is in anticipation of a new Slackware release but can
be applied to the SBo package for Slackware 14.0 since it is
backwards compatible and should not affect behavior on glibc
2.15. It would be good if my assertion were tested.

[rworkman] Yeah, it seems to work here :-)

Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
2013-06-29 16:12:38 -03:00

114 lines
3.2 KiB
Bash

#!/bin/sh
# Slackbuild Script for GDM
#
# Written by James Rich james@chowhouse.com
#
# Assumed to be in public domain per our submission guidelines
# Modified by the SlackBuilds.org project
# Modified by Frank Caraballo <fecaraballo{at}gmail{dot}com>
# Maintained by Robby Workman <rworkman@slackbuilds.org>
PRGNAM=gdm
VERSION=${VERSION:-2.20.11}
BUILD=${BUILD:-5}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i486 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
# Don't automatically start ssh-agent -- this is the user's job
patch -p1 < $CWD/patches/do_not_start_ssh-agent.diff
# Fix crypt() usage with glibc-2.17 and later
patch -p1 < $CWD/patches/gdm-2.20.11-crypt.diff
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc/X11 \
--localstatedir=/var/lib \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--disable-scrollkeeper \
--enable-console-helper=no \
--enable-static=no \
--enable-ipv6=yes \
--with-dmconfdir=/usr/share/xsessions \
--build=$ARCH-slackware-linux
make SUSPEND_COMMAND=/usr/sbin/pm-suspend
make SUSPEND_COMMAND=/usr/sbin/pm-suspend install-strip DESTDIR=$PKG
# Install some simple session files designed to work with Slackware
mkdir -p $PKG/usr/share/xsessions
cp $CWD/sessions/* $PKG/usr/share/xsessions
chmod 0755 $PKG/usr/share/xsessions/*
# Make xfce the default session
patch -d $PKG -p1 < $CWD/patches/make_xfce_default_session.diff
# Let's not clobber the configs
mv $PKG/etc/X11/gdm/custom.conf $PKG/etc/X11/gdm/custom.conf.new
mv $PKG/etc/X11/gdm/Xsession $PKG/etc/X11/gdm/Xsession.new
mv $PKG/etc/X11/gdm/Init/Default $PKG/etc/X11/gdm/Init/Default.new
mv $PKG/etc/X11/gdm/PreSession/Default $PKG/etc/X11/gdm/PreSession/Default.new
mv $PKG/etc/X11/gdm/PostSession/Default $PKG/etc/X11/gdm/PostSession/Default.new
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
AUTHORS ChangeLog COPYING INSTALL MAINTAINERS NEWS README* TODO docs/C/* \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}