wok rev 25629

Fix xscreensaver and up to 5.45 (thanks Pat)
author Stanislas Leduc <shann@slitaz.org>
date Tue Dec 19 20:23:40 2023 +0100 (4 months ago)
parents c228e4370f9d
children d88295c12cfc
files xscreensaver/receipt xscreensaver/stuff/xscreensaver.no.expiration.date.diff xscreensaver/stuff/xscreensaver.setuid.diff
line diff
     1.1 --- a/xscreensaver/receipt	Sun Dec 17 20:37:36 2023 +0000
     1.2 +++ b/xscreensaver/receipt	Tue Dec 19 20:23:40 2023 +0100
     1.3 @@ -1,7 +1,7 @@
     1.4  # SliTaz package receipt.
     1.5  
     1.6  PACKAGE="xscreensaver"
     1.7 -VERSION="5.44"
     1.8 +VERSION="5.45"
     1.9  CATEGORY="x-window"
    1.10  SHORT_DESC="A collection of free screen savers."
    1.11  MAINTAINER="al.bobylev@gmail.com"
    1.12 @@ -11,12 +11,11 @@
    1.13  TARBALL="$PACKAGE-$VERSION.tar.gz"
    1.14  WGET_URL="http://sources.buildroot.net/$PACKAGE/$TARBALL"
    1.15  
    1.16 -DEPENDS=""
    1.17 -BUILD_DEPENDS="bc gdk-pixbuf-dev gtk+-dev jpeg-dev libglade-dev 
    1.18 -	libxml2-dev mesa-dev xorg-libX11-dev xorg-libXext-dev 
    1.19 -	xorg-libXi-dev xorg-libXinerama-dev xorg-libXmu-dev 
    1.20 -	xorg-libXpm-dev xorg-libXrandr-dev xorg-libXt-dev 
    1.21 -	xorg-libXxf86vm-dev"
    1.22 +BUILD_DEPENDS="bc gdk-pixbuf-dev gtk+-dev jpeg-dev
    1.23 +	libglade-dev libxml2-dev mesa-dev xorg-libX11-dev
    1.24 +	xorg-libXext-dev xorg-libXi-dev xorg-libXinerama-dev
    1.25 +	xorg-libXmu-dev xorg-libXpm-dev xorg-libXrandr-dev
    1.26 +	xorg-libXt-dev xorg-libXxf86vm-dev"
    1.27  
    1.28  # What is the latest version available today?
    1.29  current_version()
    1.30 @@ -28,11 +27,24 @@
    1.31  # Rules to configure and make the package.
    1.32  compile_rules()
    1.33  {
    1.34 -	export LDFLAGS="$LDFLAGS $(pkg-config --libs gtk+-2.0 gdk-pixbuf-xlib-2.0 gl)"
    1.35 +	# Thanks Slackware for patch and have work xscreensaver
    1.36 +        export CFLAGS="$CFLAGS -std=gnu89"
    1.37  
    1.38 -	./configure $CONFIGURE_ARGS &&
    1.39 -	make && 
    1.40 -	make install_prefix=$DESTDIR install
    1.41 +        # Drop popup about version is old
    1.42 +        patch -p1 < $stuff/xscreensaver.no.expiration.date.diff
    1.43 +        # Patch for shadow
    1.44 +        patch -p1 < $stuff/xscreensaver.setuid.diff
    1.45 +
    1.46 +        ./configure        \
    1.47 +            --with-shadow  \
    1.48 +            --with-jpeg    \
    1.49 +            --with-gl      \
    1.50 +        $CONFIGURE_ARGS &&
    1.51 +        make &&
    1.52 +        make install_prefix=$DESTDIR install
    1.53 +
    1.54 +        # Need for password unlock
    1.55 +        chmod 2751 $install/usr/bin/xscreensaver
    1.56  }
    1.57  
    1.58  # Rules to gen a SliTaz package suitable for Tazpkg.
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/xscreensaver/stuff/xscreensaver.no.expiration.date.diff	Tue Dec 19 20:23:40 2023 +0100
     2.3 @@ -0,0 +1,30 @@
     2.4 +--- ./driver/prefs.c.orig	2018-04-09 20:21:20.000000000 -0500
     2.5 ++++ ./driver/prefs.c	2018-04-13 13:38:47.859002138 -0500
     2.6 +@@ -1734,6 +1734,17 @@
     2.7 +      shipping the last version with the old license and then never
     2.8 +      upgrading it again -- which would be the worst possible outcome for
     2.9 +      everyone involved, most especially the users.
    2.10 ++
    2.11 ++     ---
    2.12 ++
    2.13 ++     NOTE:  This feature is disabled by Slackware...  we do not ship multi-year
    2.14 ++     old versions, nor do we think it is a good idea to include nag screens
    2.15 ++     that activate when an expiration date is reached.  In this case, the
    2.16 ++     nag screen was activated after only one year, which practically insures
    2.17 ++     that this will be seen before the next stable Slackware release.
    2.18 ++     If there's a problem that needs fixing, we'll issue a fix.
    2.19 ++     No nag screens please.  Thanks for possibly reconsidering this!
    2.20 ++
    2.21 +   */
    2.22 + 
    2.23 +   time_t now = time ((time_t *) 0);				/*   d   */
    2.24 +@@ -1766,5 +1777,8 @@
    2.25 +   mrnths = ((((tm->tm_year + 1900) * 12) + tm->tm_mon) -	/*   h   */
    2.26 +             (y * 12 + m));					/*   h   */
    2.27 + 							  	/*   p   */
    2.28 +-  return (mrnths >= 17);					/*   .   */
    2.29 ++  /* Disable date checking for Slackware: */			/*  \■/  */
    2.30 ++  /* return (mrnths >= 17); */					/*   .   */
    2.31 ++  return ( 0 );
    2.32 ++
    2.33 + }
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/xscreensaver/stuff/xscreensaver.setuid.diff	Tue Dec 19 20:23:40 2023 +0100
     3.3 @@ -0,0 +1,179 @@
     3.4 +--- ./driver/setuid.c.orig	2006-02-08 20:28:38.000000000 -0600
     3.5 ++++ ./driver/setuid.c	2006-04-04 16:48:08.000000000 -0500
     3.6 +@@ -1,5 +1,5 @@
     3.7 + /* setuid.c --- management of runtime privileges.
     3.8 +- * xscreensaver, Copyright (c) 1993-1998, 2005 Jamie Zawinski <jwz@jwz.org>
     3.9 ++ * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <jwz@jwz.org>
    3.10 +  *
    3.11 +  * Permission to use, copy, modify, distribute, and sell this software and its
    3.12 +  * documentation for any purpose is hereby granted without fee, provided that
    3.13 +@@ -41,7 +41,7 @@
    3.14 +   struct group *g = 0;
    3.15 +   p = getpwuid (uid);
    3.16 +   g = getgrgid (gid);
    3.17 +-  sprintf (buf, "%.100s/%.100s (%ld/%ld)",
    3.18 ++  sprintf (buf, "%s/%s (%ld/%ld)",
    3.19 + 	   (p && p->pw_name ? p->pw_name : "???"),
    3.20 + 	   (g && g->gr_name ? g->gr_name : "???"),
    3.21 + 	   (long) uid, (long) gid);
    3.22 +@@ -74,50 +74,11 @@
    3.23 + }
    3.24 + 
    3.25 + 
    3.26 +-/* Returns true if we need to call setgroups().
    3.27 +-
    3.28 +-   Without calling setgroups(), the process will retain any supplementary
    3.29 +-   gids associated with the uid, e.g.:
    3.30 +-
    3.31 +-       % groups root
    3.32 +-       root : root bin daemon sys adm disk wheel
    3.33 +-
    3.34 +-   However, setgroups() can only be called by root, and returns EPERM
    3.35 +-   for other users even if the call would be a no-op (e.g., setting the
    3.36 +-   group list to the current list.)  So, to avoid that spurious error,
    3.37 +-   before calling setgroups() we first check whether the current list
    3.38 +-   of groups contains only one element, our target group.  If so, we
    3.39 +-   don't need to call setgroups().
    3.40 +- */
    3.41 +-static int
    3.42 +-setgroups_needed_p (uid_t target_group)
    3.43 +-{
    3.44 +-  gid_t groups[1024];
    3.45 +-  int n, size;
    3.46 +-  size = sizeof(groups) / sizeof(gid_t);
    3.47 +-  n = getgroups (size - 1, groups);
    3.48 +-  if (n < 0)
    3.49 +-    {
    3.50 +-      char buf [1024];
    3.51 +-      sprintf (buf, "%s: getgroups(%ld, ...)", blurb(), (long int)(size - 1));
    3.52 +-      perror (buf);
    3.53 +-      return 1;
    3.54 +-    }
    3.55 +-  else if (n == 0)            /* an empty list means only egid is in effect. */
    3.56 +-    return 0;
    3.57 +-  else if (n == 1 && groups[0] == target_group)   /* one element, the target */
    3.58 +-    return 0;
    3.59 +-  else                        /* more than one, or the wrong one. */
    3.60 +-    return 1;
    3.61 +-}
    3.62 +-
    3.63 +-
    3.64 + static int
    3.65 + set_ids_by_number (uid_t uid, gid_t gid, char **message_ret)
    3.66 + {
    3.67 +   int uid_errno = 0;
    3.68 +   int gid_errno = 0;
    3.69 +-  int sgs_errno = 0;
    3.70 +   struct passwd *p = getpwuid (uid);
    3.71 +   struct group  *g = getgrgid (gid);
    3.72 + 
    3.73 +@@ -136,11 +97,6 @@
    3.74 +   if (uid == (uid_t) -1) uid = (uid_t) -2;
    3.75 + 
    3.76 +   errno = 0;
    3.77 +-  if (setgroups_needed_p (gid) &&
    3.78 +-      setgroups (1, &gid) < 0)
    3.79 +-    sgs_errno = errno ? errno : -1;
    3.80 +-
    3.81 +-  errno = 0;
    3.82 +   if (setgid (gid) != 0)
    3.83 +     gid_errno = errno ? errno : -1;
    3.84 + 
    3.85 +@@ -148,10 +104,10 @@
    3.86 +   if (setuid (uid) != 0)
    3.87 +     uid_errno = errno ? errno : -1;
    3.88 + 
    3.89 +-  if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0)
    3.90 ++  if (uid_errno == 0 && gid_errno == 0)
    3.91 +     {
    3.92 +       static char buf [1024];
    3.93 +-      sprintf (buf, "changed uid/gid to %.100s/%.100s (%ld/%ld).",
    3.94 ++      sprintf (buf, "changed uid/gid to %s/%s (%ld/%ld).",
    3.95 + 	       (p && p->pw_name ? p->pw_name : "???"),
    3.96 +                (g && g->gr_name ? g->gr_name : "???"),
    3.97 + 	       (long) uid, (long) gid);
    3.98 +@@ -162,71 +118,28 @@
    3.99 +   else
   3.100 +     {
   3.101 +       char buf [1024];
   3.102 +-      gid_t groups[1024];
   3.103 +-      int n, size;
   3.104 +-
   3.105 +-      if (sgs_errno)
   3.106 +-	{
   3.107 +-	  sprintf (buf, "%s: couldn't setgroups to %.100s (%ld)",
   3.108 +-		   blurb(),
   3.109 +-		   (g && g->gr_name ? g->gr_name : "???"),
   3.110 +-		   (long) gid);
   3.111 +-	  if (sgs_errno == -1)
   3.112 +-	    fprintf(stderr, "%s: unknown error\n", buf);
   3.113 +-	  else
   3.114 +-            {
   3.115 +-              errno = sgs_errno;
   3.116 +-              perror(buf);
   3.117 +-            }
   3.118 +-
   3.119 +-	  fprintf (stderr, "%s: effective group list: ", blurb());
   3.120 +-	  size = sizeof(groups) / sizeof(gid_t);
   3.121 +-          n = getgroups (size - 1, groups);
   3.122 +-          if (n < 0)
   3.123 +-            fprintf (stderr, "unknown!\n");
   3.124 +-          else
   3.125 +-            {
   3.126 +-              int i;
   3.127 +-              fprintf (stderr, "[");
   3.128 +-              for (i = 0; i < n; i++)
   3.129 +-                {
   3.130 +-                  g = getgrgid (groups[i]);
   3.131 +-                  if (i > 0) fprintf (stderr, ", ");
   3.132 +-                  if (g && g->gr_name) fprintf (stderr, "%s", g->gr_name);
   3.133 +-                  else fprintf (stderr, "%ld", (long) groups[i]);
   3.134 +-                }
   3.135 +-              fprintf (stderr, "]\n");
   3.136 +-            }
   3.137 +-        }
   3.138 +-
   3.139 +       if (gid_errno)
   3.140 + 	{
   3.141 +-	  sprintf (buf, "%s: couldn't set gid to %.100s (%ld)",
   3.142 ++	  sprintf (buf, "%s: couldn't set gid to %s (%ld)",
   3.143 + 		   blurb(),
   3.144 + 		   (g && g->gr_name ? g->gr_name : "???"),
   3.145 + 		   (long) gid);
   3.146 + 	  if (gid_errno == -1)
   3.147 + 	    fprintf(stderr, "%s: unknown error\n", buf);
   3.148 + 	  else
   3.149 +-            {
   3.150 +-              errno = gid_errno;
   3.151 +-              perror(buf);
   3.152 +-            }
   3.153 ++	    perror(buf);
   3.154 + 	}
   3.155 + 
   3.156 +       if (uid_errno)
   3.157 + 	{
   3.158 +-	  sprintf (buf, "%s: couldn't set uid to %.100s (%ld)",
   3.159 ++	  sprintf (buf, "%s: couldn't set uid to %s (%ld)",
   3.160 + 		   blurb(),
   3.161 + 		   (p && p->pw_name ? p->pw_name : "???"),
   3.162 + 		   (long) uid);
   3.163 + 	  if (uid_errno == -1)
   3.164 + 	    fprintf(stderr, "%s: unknown error\n", buf);
   3.165 + 	  else
   3.166 +-            {
   3.167 +-              errno = uid_errno;
   3.168 +-              perror(buf);
   3.169 +-            }
   3.170 ++	    perror(buf);
   3.171 + 	}
   3.172 + 
   3.173 +       return -1;
   3.174 +@@ -350,7 +263,7 @@
   3.175 + 	!strcmp (p->pw_name, "games"))
   3.176 +       {
   3.177 + 	static char buf [1024];
   3.178 +-	sprintf (buf, "running as %.100s",
   3.179 ++	sprintf (buf, "running as %s",
   3.180 + 		 (p && p->pw_name && *p->pw_name
   3.181 + 		  ? p->pw_name : "<unknown>"));
   3.182 + 	si->nolock_reason = buf;