update to xscreensaver-6.03, based on a diff from Ariel Popper.

This moves the setuid root from the main screensaver process to a smaller
auth process (it uses getpwnam_shadow for user db access, there is no
driver for bsd-auth). I've tried it with setgid _shadow instead of
setuid root but unlock is broken in that case.

This is better than it was previously, but still not ideal. I suggest
the ports version of slock (not upstream's; we had to add bsd-auth support
back in via a patch after upstream removed it again) or xlock.

Add some notes to the Makefile describing the current situation in case
somebody wants to improve it (it should be possible to add a bsd-auth
driver to this instead).
This commit is contained in:
sthen 2022-04-02 12:55:17 +00:00
parent cae0bb368c
commit 35395000af
7 changed files with 88 additions and 75 deletions

View File

@ -1,6 +1,14 @@
COMMENT= screen saver and locker for the X Window System
DISTNAME= xscreensaver-5.45
# No driver for BSD Authentication so xscreensaver-auth uses the
# driver/passwd-pwent.c backend using getpwnam_shadow() which is using
# setuid root for access to the shadow password db. For some reason
# unlock fails to ask for a password with just setgid _shadow - maybe
# related to setgroups() failing, maybe something else.
#
# Ideally this wants a bsdauth driver to be written, change to being
# installed setgid auth, and figure out any issues resulting.
DISTNAME= xscreensaver-6.03
CATEGORIES= x11
@ -9,9 +17,9 @@ HOMEPAGE= https://www.jwz.org/xscreensaver/
# BSD
PERMIT_PACKAGE= Yes
WANTLIB += GL GLU ICE SM X11 Xcomposite Xcursor Xdamage Xext Xfixes
WANTLIB += Xft Xi Xinerama Xmu Xrandr Xrender Xt Xxf86vm atk-1.0
WANTLIB += c cairo fontconfig freetype gdk-x11-2.0 gdk_pixbuf-2.0
WANTLIB = EGL GL GLU ICE SM X11 Xcomposite Xcursor Xdamage Xext Xfixes
WANTLIB += Xft Xi Xinerama Xrandr Xrender Xt Xxf86vm atk-1.0 c cairo
WANTLIB += fontconfig freetype gdk-x11-2.0 gdk_pixbuf-2.0
WANTLIB += gdk_pixbuf_xlib-2.0 gio-2.0 gle glib-2.0 gmodule-2.0
WANTLIB += gobject-2.0 gtk-x11-2.0 harfbuzz intl jpeg m pango-1.0
WANTLIB += pangocairo-1.0 pangoft2-1.0 pthread util xml2 z
@ -39,8 +47,7 @@ USE_GMAKE= Yes
NO_TEST= Yes
CONFIGURE_STYLE= gnu
CONFIGURE_ARGS= --with-hackdir="${PREFIX}/libexec/xscreensaver" \
--with-x-app-defaults="${PREFIX}/lib/X11/app-defaults" \
CONFIGURE_ARGS= --with-app-defaults="${PREFIX}/lib/X11/app-defaults" \
--without-pam
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib"

View File

@ -1,2 +1,2 @@
SHA256 (xscreensaver-5.45.tar.gz) = cBbfZza6ASamjB81q89BGmlf6TvAGhjr2d9Gyan01Q0=
SIZE (xscreensaver-5.45.tar.gz) = 27729147
SHA256 (xscreensaver-6.03.tar.gz) = Mo1ReXNSrPWMpbq0nnb78mA058rXhfZR6hHOe0P7olo=
SIZE (xscreensaver-6.03.tar.gz) = 25703584

View File

@ -0,0 +1,13 @@
Permit building if security/openpam is installed.
Index: configure
--- configure.orig
+++ configure
@@ -21135,7 +21135,6 @@ elif test "$have_pam" = no ; then
if test -d /etc/pam.d -o -f /etc/pam.conf ; then
warn "Your system seems to have PAM, but PAM is not being used."
warn2 "That is probably not going to work out well."
- CONF_STATUS=1
fi
fi

View File

@ -1,16 +1,16 @@
Don't hardcode gnome-terminal, fallback to xterm
OpenBSD doesn't have x-terminal-emulator.
Index: driver/XScreenSaver.ad.in
--- driver/XScreenSaver.ad.in.orig
+++ driver/XScreenSaver.ad.in
@@ -101,8 +101,8 @@
! Gnome 2.4, 2.6: (yelp can't display man pages, as of 2.6.3)
@@ -80,8 +80,8 @@
!
@GNOME24@*loadURL: @WITH_BROWSER@ '%s'
-@GNOME24@*manualCommand: gnome-terminal --title '%s manual' \
-@GNOME24@ --command '/bin/sh -c "man %s; read foo"'
+@GNOME24@*manualCommand: xterm -sb -fg black -bg gray75 -T '%s manual' \
+@GNOME24@ -e /bin/sh -c 'man "%s" ; read foo'
@GNOME24@*manualCommand: yelp man:%s || \
-@GNOME24@ x-terminal-emulator -t '%s manual' \
-@GNOME24@ -e /bin/sh -c "man %s; read foo"
+@GNOME24@ xterm -sb -fg black -bg gray75 -T '%s manual' \
+@GNOME24@ -e /bin/sh -c 'man "%s" ; read foo'
!
! Gnome 2.2:
!

View File

@ -1,7 +1,7 @@
Index: driver/passwd-pwent.c
--- driver/passwd-pwent.c.orig
+++ driver/passwd-pwent.c
@@ -133,7 +133,7 @@ user_name (void)
@@ -121,7 +121,7 @@ user_name (void)
still work. Right?) */
if (!u || !*u)
{
@ -10,12 +10,12 @@ Index: driver/passwd-pwent.c
u = (p ? p->pw_name : 0);
}
@@ -177,7 +177,7 @@ get_encrypted_passwd(const char *user)
@@ -158,7 +158,7 @@ get_encrypted_passwd (const char *user)
if (user && *user && !result)
{ /* Check non-shadow passwords too. */
- struct passwd *p = getpwnam(user);
+ struct passwd *p = getpwnam_shadow(user);
if (p && passwd_known_p (p->pw_passwd))
result = strdup(p->pw_passwd);
result = strdup(p->pw_passwd);
}

View File

@ -1,13 +0,0 @@
Index: hacks/glx/crumbler.c
--- hacks/glx/crumbler.c.orig
+++ hacks/glx/crumbler.c
@@ -676,6 +676,9 @@ init_crumbler (ModeInfo *mi)
# undef R
}
+# ifdef __OpenBSD__
+ density *= 0.5;
+#endif
# ifdef HAVE_MOBILE
# ifdef HAVE_IPHONE
density *= 0.5; /* iPhone 6s runs out of memory at 4500 nverts. */

View File

@ -5,16 +5,11 @@
@pkgpath x11/xscreensaver,no_gle
@pkgpath x11/xscreensaver,-main
@pkgpath x11/xscreensaver,-data
@mode 4755
@bin bin/xscreensaver
@mode
@bin bin/xscreensaver-command
@bin bin/xscreensaver-demo
@bin bin/xscreensaver-getimage
bin/xscreensaver-getimage-file
bin/xscreensaver-getimage-video
@bin bin/xscreensaver-gl-helper
bin/xscreensaver-text
bin/xscreensaver-demo
@bin bin/xscreensaver-settings
lib/X11/app-defaults/XScreenSaver
libexec/xscreensaver/
@bin libexec/xscreensaver/abstractile
@bin libexec/xscreensaver/anemone
@ -29,6 +24,7 @@ libexec/xscreensaver/
@bin libexec/xscreensaver/atunnel
@bin libexec/xscreensaver/barcode
@bin libexec/xscreensaver/beats
@bin libexec/xscreensaver/binaryhorizon
@bin libexec/xscreensaver/binaryring
@bin libexec/xscreensaver/blaster
@bin libexec/xscreensaver/blinkbox
@ -149,10 +145,12 @@ libexec/xscreensaver/
@bin libexec/xscreensaver/lament
@bin libexec/xscreensaver/lavalite
@bin libexec/xscreensaver/lcdscrub
libexec/xscreensaver/ljlatest
@bin libexec/xscreensaver/lockward
@bin libexec/xscreensaver/loop
@bin libexec/xscreensaver/m6502
@bin libexec/xscreensaver/mapscroller
libexec/xscreensaver/mapscroller.pl
@bin libexec/xscreensaver/marbling
@bin libexec/xscreensaver/maze
@bin libexec/xscreensaver/maze3d
@bin libexec/xscreensaver/memscroller
@ -195,7 +193,7 @@ libexec/xscreensaver/ljlatest
@bin libexec/xscreensaver/queens
@bin libexec/xscreensaver/raverhoop
@bin libexec/xscreensaver/razzledazzle
@bin libexec/xscreensaver/rd-bomb
@bin libexec/xscreensaver/rdbomb
@bin libexec/xscreensaver/ripples
@bin libexec/xscreensaver/rocks
@bin libexec/xscreensaver/romanboy
@ -220,6 +218,7 @@ libexec/xscreensaver/ljlatest
@bin libexec/xscreensaver/spotlight
@bin libexec/xscreensaver/sproingies
@bin libexec/xscreensaver/squiral
@bin libexec/xscreensaver/squirtorus
@bin libexec/xscreensaver/stairs
@bin libexec/xscreensaver/starfish
@bin libexec/xscreensaver/starwars
@ -257,15 +256,20 @@ libexec/xscreensaver/webcollage
@bin libexec/xscreensaver/xlyap
@bin libexec/xscreensaver/xmatrix
@bin libexec/xscreensaver/xrayswarm
@mode 4755
@bin libexec/xscreensaver/xscreensaver-auth
@mode
@bin libexec/xscreensaver/xscreensaver-getimage
libexec/xscreensaver/xscreensaver-getimage-file
libexec/xscreensaver/xscreensaver-getimage-video
@bin libexec/xscreensaver/xscreensaver-gfx
@bin libexec/xscreensaver/xscreensaver-gl-visual
libexec/xscreensaver/xscreensaver-text
@bin libexec/xscreensaver/xspirograph
@bin libexec/xscreensaver/zoom
@man man/man1/xscreensaver-command.1
@man man/man1/xscreensaver-demo.1
@man man/man1/xscreensaver-getimage-file.1
@man man/man1/xscreensaver-getimage-video.1
@man man/man1/xscreensaver-getimage.1
@man man/man1/xscreensaver-systemd.1
@man man/man1/xscreensaver-text.1
@man man/man1/xscreensaver-settings.1
@man man/man1/xscreensaver.1
@man man/man6/abstractile.6
@man man/man6/anemone.6
@ -280,6 +284,7 @@ libexec/xscreensaver/webcollage
@man man/man6/atunnel.6
@man man/man6/barcode.6
@man man/man6/beats.6
@man man/man6/binaryhorizon.6
@man man/man6/binaryring.6
@man man/man6/blaster.6
@man man/man6/blinkbox.6
@ -398,9 +403,10 @@ libexec/xscreensaver/webcollage
@man man/man6/lament.6
@man man/man6/lavalite.6
@man man/man6/lcdscrub.6
@man man/man6/ljlatest.6
@man man/man6/lockward.6
@man man/man6/loop.6
@man man/man6/mapscroller.6
@man man/man6/marbling.6
@man man/man6/maze.6
@man man/man6/maze3d.6
@man man/man6/memscroller.6
@ -442,7 +448,7 @@ libexec/xscreensaver/webcollage
@man man/man6/queens.6
@man man/man6/raverhoop.6
@man man/man6/razzledazzle.6
@man man/man6/rd-bomb.6
@man man/man6/rdbomb.6
@man man/man6/ripples.6
@man man/man6/rocks.6
@man man/man6/romanboy.6
@ -467,6 +473,7 @@ libexec/xscreensaver/webcollage
@man man/man6/spotlight.6
@man man/man6/sproingies.6
@man man/man6/squiral.6
@man man/man6/squirtorus.6
@man man/man6/stairs.6
@man man/man6/starfish.6
@man man/man6/starwars.6
@ -503,9 +510,16 @@ libexec/xscreensaver/webcollage
@man man/man6/xlyap.6
@man man/man6/xmatrix.6
@man man/man6/xrayswarm.6
@man man/man6/xscreensaver-auth.6
@man man/man6/xscreensaver-circuit.6
@man man/man6/xscreensaver-deco.6
@man man/man6/xscreensaver-gl-helper.6
@man man/man6/xscreensaver-getimage-file.6
@man man/man6/xscreensaver-getimage-video.6
@man man/man6/xscreensaver-getimage.6
@man man/man6/xscreensaver-gfx.6
@man man/man6/xscreensaver-gl-visual.6
@man man/man6/xscreensaver-systemd.6
@man man/man6/xscreensaver-text.6
@man man/man6/xspirograph.6
@man man/man6/zoom.6
share/applications/screensavers/
@ -523,6 +537,7 @@ share/applications/screensavers/attraction.desktop
share/applications/screensavers/atunnel.desktop
share/applications/screensavers/barcode.desktop
share/applications/screensavers/beats.desktop
share/applications/screensavers/binaryhorizon.desktop
share/applications/screensavers/binaryring.desktop
share/applications/screensavers/blaster.desktop
share/applications/screensavers/blinkbox.desktop
@ -661,6 +676,8 @@ share/applications/screensavers/lmorph.desktop
share/applications/screensavers/lockward.desktop
share/applications/screensavers/loop.desktop
share/applications/screensavers/m6502.desktop
share/applications/screensavers/mapscroller.desktop
share/applications/screensavers/marbling.desktop
share/applications/screensavers/maze.desktop
share/applications/screensavers/maze3d.desktop
share/applications/screensavers/memscroller.desktop
@ -704,7 +721,6 @@ share/applications/screensavers/quasicrystal.desktop
share/applications/screensavers/queens.desktop
share/applications/screensavers/raverhoop.desktop
share/applications/screensavers/razzledazzle.desktop
share/applications/screensavers/rd-bomb.desktop
share/applications/screensavers/rdbomb.desktop
share/applications/screensavers/ripples.desktop
share/applications/screensavers/rocks.desktop
@ -733,6 +749,7 @@ share/applications/screensavers/splodesic.desktop
share/applications/screensavers/spotlight.desktop
share/applications/screensavers/sproingies.desktop
share/applications/screensavers/squiral.desktop
share/applications/screensavers/squirtorus.desktop
share/applications/screensavers/stairs.desktop
share/applications/screensavers/starfish.desktop
share/applications/screensavers/starwars.desktop
@ -777,28 +794,13 @@ share/applications/screensavers/xrayswarm.desktop
share/applications/screensavers/xspirograph.desktop
share/applications/screensavers/zoom.desktop
share/applications/xscreensaver-properties.desktop
share/locale/da/LC_MESSAGES/xscreensaver.mo
share/locale/de/LC_MESSAGES/xscreensaver.mo
share/locale/es/LC_MESSAGES/xscreensaver.mo
share/locale/et/LC_MESSAGES/xscreensaver.mo
share/locale/fi/LC_MESSAGES/xscreensaver.mo
share/locale/fr/LC_MESSAGES/xscreensaver.mo
share/locale/hu/LC_MESSAGES/xscreensaver.mo
share/locale/it/LC_MESSAGES/xscreensaver.mo
share/locale/ja/LC_MESSAGES/xscreensaver.mo
share/locale/ko/LC_MESSAGES/xscreensaver.mo
share/locale/nb/LC_MESSAGES/xscreensaver.mo
share/locale/nl/LC_MESSAGES/xscreensaver.mo
share/locale/pl/LC_MESSAGES/xscreensaver.mo
share/locale/pt/LC_MESSAGES/xscreensaver.mo
share/locale/pt_BR/LC_MESSAGES/xscreensaver.mo
share/locale/ru/LC_MESSAGES/xscreensaver.mo
share/locale/sk/LC_MESSAGES/xscreensaver.mo
share/locale/sv/LC_MESSAGES/xscreensaver.mo
share/locale/vi/LC_MESSAGES/xscreensaver.mo
share/locale/wa/LC_MESSAGES/xscreensaver.mo
share/locale/zh_CN/LC_MESSAGES/xscreensaver.mo
share/locale/zh_TW/LC_MESSAGES/xscreensaver.mo
share/fonts/
@fontdir share/fonts/xscreensaver/
share/fonts/xscreensaver/OCRAStd.otf
share/fonts/xscreensaver/SpecialElite.ttf
share/fonts/xscreensaver/clacon.ttf
share/fonts/xscreensaver/gallant12x22.ttf
share/fonts/xscreensaver/luximr.ttf
share/pixmaps/
share/pixmaps/xscreensaver.xpm
share/xscreensaver/
@ -817,6 +819,7 @@ share/xscreensaver/config/attraction.xml
share/xscreensaver/config/atunnel.xml
share/xscreensaver/config/barcode.xml
share/xscreensaver/config/beats.xml
share/xscreensaver/config/binaryhorizon.xml
share/xscreensaver/config/binaryring.xml
share/xscreensaver/config/blaster.xml
share/xscreensaver/config/blinkbox.xml
@ -940,6 +943,8 @@ share/xscreensaver/config/lcdscrub.xml
share/xscreensaver/config/lockward.xml
share/xscreensaver/config/loop.xml
share/xscreensaver/config/m6502.xml
share/xscreensaver/config/mapscroller.xml
share/xscreensaver/config/marbling.xml
share/xscreensaver/config/maze.xml
share/xscreensaver/config/maze3d.xml
share/xscreensaver/config/memscroller.xml
@ -982,7 +987,7 @@ share/xscreensaver/config/quasicrystal.xml
share/xscreensaver/config/queens.xml
share/xscreensaver/config/raverhoop.xml
share/xscreensaver/config/razzledazzle.xml
share/xscreensaver/config/rd-bomb.xml
share/xscreensaver/config/rdbomb.xml
share/xscreensaver/config/ripples.xml
share/xscreensaver/config/rocks.xml
share/xscreensaver/config/romanboy.xml
@ -1007,6 +1012,7 @@ share/xscreensaver/config/splodesic.xml
share/xscreensaver/config/spotlight.xml
share/xscreensaver/config/sproingies.xml
share/xscreensaver/config/squiral.xml
share/xscreensaver/config/squirtorus.xml
share/xscreensaver/config/stairs.xml
share/xscreensaver/config/starfish.xml
share/xscreensaver/config/starwars.xml
@ -1052,5 +1058,5 @@ share/xscreensaver/ui/screensaver-diagnostic.png
share/xscreensaver/ui/screensaver-locking.png
share/xscreensaver/ui/screensaver-power.png
share/xscreensaver/ui/screensaver-snap.png
share/xscreensaver/ui/xscreensaver-demo.ui
share/xscreensaver/ui/xscreensaver.ui
@tag update-desktop-database