Browse Source

xscreensaver package update

Signed-off-by: guibuilder_pel7x64builder0 <guibuilder@powerel.org>
master
guibuilder_pel7x64builder0 6 years ago
parent
commit
8292640000
  1. 92
      SOURCES/update-xscreensaver-hacks
  2. 36
      SOURCES/xscreensaver-5.39-0003-crumbler-fix-loop-enclosure-for-calculating-keys-in-.patch
  3. 44
      SOURCES/xscreensaver-5.39-0004-xscreensaver-getimage-avoid-substitution-to-NULL-poi.patch
  4. 26
      SPECS/xscreensaver.spec

92
SOURCES/update-xscreensaver-hacks

@ -0,0 +1,92 @@ @@ -0,0 +1,92 @@
#!/bin/bash

_SYSCONFDIR=${sysconfdir:-/etc}
_PREFIX=${prefix:-/usr}
_DATADIR=${datadir:-${_PREFIX}/share}

ADDIR=${ADDIR:-${install_prefix}${_SYSCONFDIR}/xscreensaver}
CONFDIR=${CONFDIR:-${install_prefix}${_DATADIR}/xscreensaver/hacks.conf.d}
ADFILE=${ADFILE:-$ADDIR/XScreenSaver.ad}

fix_hackconf ()
{
if [ ! -s $1 ] ; then
echo "$1 is empty" >&2
echo ""
return 1
fi

tmpconf=`mktemp /tmp/hackconf.XXXXXXXX`
tmpconf_1=`mktemp /tmp/hackconf.XXXXXXXX`
tmpconf_2=`mktemp /tmp/hackconf.XXXXXXXX`
tmpconf_3=`mktemp /tmp/hackconf.XXXXXXXX`
sed -n -e '$p' $1 > $tmpconf_1
sed -e '$d' $1 > $tmpconf_2
for file in $tmpconf_1 $tmpconf_2 ; do
if ( [ -s $file ] && grep -q '\\n\(\|\\\)[^\\].*$' $file ) ; then
rm -f $tmpconf $tmpconf_1 $tmpconf_2 $tmpconf_3
echo ""
echo "ignoring $1" >&2
return 1
fi
done
if ! grep -q '\\n[\\]*$' $tmpconf_1 ; then
sed -i -e 's|\(^.*$\)|\1 \\n\\|' $tmpconf_1
fi
sed -i -e 's|\\n$|\\n\\|' $tmpconf_1
while [ -s $tmpconf_2 ] ; do
sed -n -e '1p' $tmpconf_2 > $tmpconf_3
sed -i -e '1d' $tmpconf_2
if ! grep -q '\([ \t]\\$\|\\n\\$\)' $tmpconf_3 ; then
rm -f $tmpconf $tmpconf_1 $tmpconf_2 $tmpconf_3
echo ""
echo "ignoring $1" >&2
return 1
fi
cat $tmpconf_3 >> $tmpconf
done
cat $tmpconf_1 >> $tmpconf
rm -f $tmpconf_1 $tmpconf_2 $tmpconf_3
echo $tmpconf
return 0
}

for suffix in header tail ; do
if [ ! -r $ADDIR/XScreenSaver.ad.$suffix ] ; then
echo "$ADDIR/XScreenSaver.ad.$suffix missing"
exit 1
fi
done

tmpfile=`mktemp /tmp/XScreenSaver.ad.XXXXXXXX`

cat > $tmpfile <<EOF
! Don't edit this file directly by yourself!!
! This file is not meant to be edited directly.
!
! Instead, please edit /etc/xscreensaver/XScreenSaver.ad.header,
! /etc/xscreensaver/XScreenSaver.ad.tail and add files under
! /usr/share/xscreensaver/hacks.conf.d if you want.
!
! Then call /usr/sbin/update-xscreensaver-hacks to
! update this file.
!
EOF

cat $ADDIR/XScreenSaver.ad.header >> $tmpfile

for hackconf in $CONFDIR/*.conf ; do
hackconf_fixed=`fix_hackconf $hackconf`
if [ -n "$hackconf_fixed" ] ; then
cat $hackconf_fixed >> $tmpfile
rm -f $hackconf_fixed
fi
done
sed -i -e '$s|\\n\\$|\\n|' $tmpfile

cat $ADDIR/XScreenSaver.ad.tail >> $tmpfile
install -c -p -m 644 $tmpfile $ADFILE
rm -f $tmpfile


36
SOURCES/xscreensaver-5.39-0003-crumbler-fix-loop-enclosure-for-calculating-keys-in-.patch

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
From 337d06b4c2f5f779de835c5eb54846db330b33cf Mon Sep 17 00:00:00 2001
From: XScreenSaver owners <xscreensaver-owner@fedoraproject.org>
Date: Mon, 16 Apr 2018 21:39:38 +0900
Subject: [PATCH] crumbler: fix loop enclosure for calculating keys in
split_chunk

In split_chunk(), unique keys should be assigned to each chunks,
however current loop for calculating keys has logical mistake.
Fix this.
---
hacks/glx/crumbler.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/hacks/glx/crumbler.c b/hacks/glx/crumbler.c
index f9a908a..b4420e7 100644
--- a/hacks/glx/crumbler.c
+++ b/hacks/glx/crumbler.c
@@ -352,12 +352,14 @@ split_chunk (ModeInfo *mi, chunk *c, int nchunks)
do {
keys[i] = random() % c->nverts;
for (j = 0; j < i; j++)
+ {
if (keys[i] == keys[j])
{
ok = False;
break;
}
- ok = True;
+ ok = True;
+ }
} while (!ok);
c2 = make_chunk();
--
2.17.0

44
SOURCES/xscreensaver-5.39-0004-xscreensaver-getimage-avoid-substitution-to-NULL-poi.patch

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
From e0f453603296e55ca2588b822b840d724d535893 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Wed, 20 Jun 2018 18:21:45 +0900
Subject: [PATCH] xscreensaver-getimage: avoid substitution to NULL pointer

When user chooses not to use any image resource on "Image Manupulation"
in xscreensaver-demo, xscreensaver-getimage program tries to do
GRAB_BARS mode, then calls colorbars() function and it causes segfault
like:

#0 0x000055555556227a in minixpm_to_ximage (dpy=dpy@entry=0x555555788b10, visual=visual@entry=0x555555795dd0, colormap=colormap@entry=32, depth=depth@entry=24, transparent_color=<optimized out>, data=<optimized out>, data@entry=0x555555775e80 <logo_180_xpm>, width_ret=0x7fffffffcb30, height_ret=0x7fffffffcb34, pixels_ret=0x0, npixels_ret=0x0, mask_ret=0x7fffffffcb38) at ../../utils/minixpm.c:248
#1 0x0000555555561b93 in xscreensaver_logo (screen=screen@entry=0x55555578a1d0, visual=visual@entry=0x555555795dd0, drawable=drawable@entry=707, cmap=cmap@entry=32, background_color=<optimized out>, pixels_ret=pixels_ret@entry=0x0, npixels_ret=0x0, mask_ret=0x7fffffffccf0, big_p=1) at ../../utils/logo.c:49
#2 0x000055555555ab5f in colorbars (cmap=32, drawable=707, visual=0x555555795dd0, screen=0x55555578a1d0) at ../../driver/xscreensaver-getimage.c:319
#3 0x000055555555ab5f in get_image (screen=<optimized out>, file=<optimized out>, dir=<optimized out>, image_p=<optimized out>, video_p=<optimized out>, desk_p=<optimized out>, verbose_p=0, drawable=707, window=707) at ../../driver/xscreensaver-getimage.c:1697
#4 0x000055555555ab5f in main (argc=<optimized out>, argv=<optimized out>) at ../../driver/xscreensaver-getimage.c:1994
#5 0x00007ffff54d818b in __libc_start_main (main=0x55555555a4f0 <main>, argc=2, argv=0x7fffffffd428, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd418)
at ../csu/libc-start.c:308

This patch avoids NULL pointer accessment, as xscreensaver 5.38 was doing
in (5.38) draw_colorbars() function.
---
driver/xscreensaver-getimage.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/driver/xscreensaver-getimage.c b/driver/xscreensaver-getimage.c
index b9715ae..6cf5c99 100644
--- a/driver/xscreensaver-getimage.c
+++ b/driver/xscreensaver-getimage.c
@@ -316,9 +316,11 @@ static void
colorbars (Screen *screen, Visual *visual, Drawable drawable, Colormap cmap)
{
Pixmap mask = 0;
+ unsigned long *pixels; /* ignored - unfreed */
+ int npixels;
Pixmap logo = xscreensaver_logo (screen, visual, drawable, cmap,
BlackPixelOfScreen (screen),
- 0, 0, &mask, True);
+ &pixels, &npixels, &mask, True);
draw_colorbars (screen, visual, drawable, cmap, 0, 0, 0, 0, logo, mask);
XFreePixmap (DisplayOfScreen (screen), logo);
XFreePixmap (DisplayOfScreen (screen), mask);
--
2.17.1

26
SPECS/xscreensaver.spec

@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
%define split_getimage 1
%endif

%define fedora_rel 1
%define fedora_rel 6

%global use_clang_as_cc 0
%global use_clang_analyze 0
@ -89,6 +89,10 @@ Patch3607: xscreensaver-5.36-0007-misc-kill-gcc-warn_unused_result-warning @@ -89,6 +89,10 @@ Patch3607: xscreensaver-5.36-0007-misc-kill-gcc-warn_unused_result-warning
Patch3901: xscreensaver-5.39-0001-driver-Makefile.in-fix-path-for-font-retry.o.patch
# crumbler: fix color overvalue when accessing colors array
Patch3902: xscreensaver-5.39-0002-crumbler-fix-color-overvalue-when-accessing-colors-a.patch
# crumbler: fix loop enclosure for calculating keys in split_chunk
Patch3903: xscreensaver-5.39-0003-crumbler-fix-loop-enclosure-for-calculating-keys-in-.patch
# xscreensaver-getimage: avoid substitution to NULL pointer on GRAB_BARS mode
Patch3904: xscreensaver-5.39-0004-xscreensaver-getimage-avoid-substitution-to-NULL-poi.patch
#
# Debugging patch
# Not apply by default
@ -344,6 +348,9 @@ EOF @@ -344,6 +348,9 @@ EOF
# Firstly clean this
rm -f driver/XScreenSaver_ad.h

# chmod
find . -name \*.c -exec chmod ugo-x {} \;

%__git init
%__git config user.email "xscreensaver-owner@fedoraproject.org"
%__git config user.name "XScreenSaver owners"
@ -366,6 +373,8 @@ rm -f driver/XScreenSaver_ad.h @@ -366,6 +373,8 @@ rm -f driver/XScreenSaver_ad.h
#%%__cat %PATCH3607 | %__git am
%__cat %PATCH3901 | %__git am
%__cat %PATCH3902 | %__git am
%__cat %PATCH3903 | %__git am
%__cat %PATCH3904 | %__git am

#%%__cat %PATCH13501 | %%__git am

@ -549,7 +558,8 @@ ln -sf /bin/true xdg-open @@ -549,7 +558,8 @@ ln -sf /bin/true xdg-open
popd

export CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}"
export CFLAGS="$(echo $CFLAGS | sed -e 's|-g |-g3 |')"
# Doesn't work well when generating debuginfo...
# export CFLAGS="$(echo $CFLAGS | sed -e 's|-g |-g3 -ggdb |')"

%if 0%{?fedora} >= 24
export CFLAGS="$CFLAGS -Wno-long-long"
@ -1051,6 +1061,18 @@ exit 0 @@ -1051,6 +1061,18 @@ exit 0
%endif

%changelog
* Wed Jun 20 2018 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.39-6
- xscreensaver-getimage: avoid substitution to NULL pointer on GRAB_BARS mode

* Mon May 28 2018 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.39-5
- Reback to -g from -g3 to fix debuginfo generation (c.f. bug 1582631)

* Wed Apr 25 2018 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.39-4
- Actually apply patch 3903

* Mon Apr 16 2018 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.39-3
- crumbler: fix loop enclosure for calculating keys in split_chunk

* Sun Apr 15 2018 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.39-2
- crumbler: fix color overvalue when accessing colors array


Loading…
Cancel
Save