Browse Source

xscreensaver update version

Signed-off-by: guibuilder_pel7x64builder0 <guibuilder@powerel.org>
master
guibuilder_pel7x64builder0 3 years ago
parent
commit
4f6f9dcfe2
  1. 14029
      SOURCES/ja.po
  2. 126
      SOURCES/xscreensaver-5.45-0001-barcode-glsnake-sanitize-the-names-of-modes.patch
  3. 42
      SOURCES/xscreensaver-5.45-0002-asm6502.c-immediate-readd-free-call-accidentally-rem.patch
  4. 33
      SOURCES/xscreensaver-5.45-0003-beats-draw_beats-avoid-integer-overflow-by-multiplic.patch
  5. 65
      SOURCES/xscreensaver-5.45-0004-xscreensaver-systemd-fix-blurb-strncpy.patch
  6. 78
      SOURCES/xscreensaver-5.45-0005-recanim.c-fix-up-Wformat-overflow-warning.patch
  7. 33
      SOURCES/xscreensaver-5.45-0006-asm6502.c-newAsmLine-shut-up-Wstringop-warning.patch
  8. 54
      SOURCES/xscreensaver-5.45-0007-lock.c-draw_passwd_window-show-logo-and-ok-button.patch
  9. 33
      SOURCES/xscreensaver-5.45-0051-test-screens.c-add-skel-XA_SCREENSAVER_VERSION-defin.patch
  10. 31
      SOURCES/xscreensaver-5.45-1001-test-password.c-add-skel-definition-for-clientmessa.patch
  11. 65
      SOURCES/xscreensaver-6.00-0001-screensaver_id-search-parenthesis-first-for-searchin.patch
  12. 30
      SOURCES/xscreensaver-6.00-0002-xscreensaver-text-use-en_US-locale-for-lscpu.patch
  13. 27
      SOURCES/xscreensaver-6.00-0003-dialog.c-window_init-show-more-version-string.patch
  14. 59
      SOURCES/xscreensaver-6.00-0004-fontglide.c-pick_font_1-exclude-substitution-rectagl.patch
  15. 55
      SOURCES/xscreensaver-6.00-0005-blurb-show-1-100-sec-on-linux.patch
  16. 53
      SOURCES/xscreensaver-6.00-0007-fontglide.c-drain_input-terminate-with-null-explicit.patch
  17. 100
      SOURCES/xscreensaver-6.01-0001-main_loop-consistently-check-init-file-after-some-ac.patch
  18. 95
      SOURCES/xscreensaver-6.01-0002-main_loop-check-init-file-saver_mode.patch
  19. 97
      SOURCES/xscreensaver-6.01-0003-window_init-check-if-asterisk-font-is-available-and-.patch
  20. 56
      SOURCES/xscreensaver-6.01-0004-destroy_window-check-ws-xftdraw-to-avoid-nullptr-der.patch
  21. 311
      SPECS/xscreensaver.spec

14029
SOURCES/ja.po

File diff suppressed because it is too large Load Diff

126
SOURCES/xscreensaver-5.45-0001-barcode-glsnake-sanitize-the-names-of-modes.patch

@ -0,0 +1,126 @@
From d8ba605b7779ce5d2fc893c44fc2986ecf176e47 Mon Sep 17 00:00:00 2001
From: XScreenSaver owners <xscreensaver-owner@fedoraproject.org>
Date: Wed, 9 Dec 2020 22:12:09 +0900
Subject: [PATCH] barcode / glsnake: sanitize the names of modes

---
hacks/barcode.c | 10 ----------
hacks/glx/glsnake.c | 12 ++++++------
2 files changed, 6 insertions(+), 16 deletions(-)

diff --git a/hacks/barcode.c b/hacks/barcode.c
index 20c2f38..ba3e2b2 100644
--- a/hacks/barcode.c
+++ b/hacks/barcode.c
@@ -122,8 +122,6 @@ static const char *words[] =
"bird flu",
"bliss",
"bogosity",
- "boobies",
- "boobs",
"booty",
"bread",
"brogrammers",
@@ -139,7 +137,6 @@ static const char *words[] =
"chocolate",
"chupacabra",
"CLONE",
- "cock",
"congress",
"constriction",
"contrition",
@@ -184,7 +181,6 @@ static const char *words[] =
"fear",
"fever",
"filth",
- "flatulence",
"fluff",
"fnord",
"followers",
@@ -202,9 +198,7 @@ static const char *words[] =
"happiness",
"hate",
"helplessness",
- "hemorrhoid",
"hermaphrodite",
- "heroin",
"heroine",
"hope",
"hysteria",
@@ -286,7 +280,6 @@ static const char *words[] =
"punishment",
"punk rock",
"punk",
- "pussy",
"quagmire",
"quarantine",
"quartz",
@@ -295,7 +288,6 @@ static const char *words[] =
"rage",
"readout",
"reality",
- "rectum",
"reject",
"rejection",
"respect",
@@ -365,8 +357,6 @@ static const char *words[] =
"venom",
"verifiability",
"very fine people",
- "viagra",
- "vibrator",
"victim",
"vignette",
"villainy",
diff --git a/hacks/glx/glsnake.c b/hacks/glx/glsnake.c
index 8efc681..125df90 100644
--- a/hacks/glx/glsnake.c
+++ b/hacks/glx/glsnake.c
@@ -539,7 +539,7 @@ static const struct model_s model[] = {
PIN, ZERO, RIGHT, RIGHT, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO,
RIGHT, ZERO }
},
- { "k's turd",
+ { "caterpillar",
{ RIGHT, RIGHT, PIN, RIGHT, LEFT, RIGHT, PIN, RIGHT, LEFT,
RIGHT, PIN, RIGHT, LEFT, RIGHT, PIN, RIGHT, LEFT, RIGHT, PIN,
RIGHT, LEFT, RIGHT, PIN, ZERO }
@@ -564,22 +564,22 @@ static const struct model_s model[] = {
ZERO, PIN, ZERO, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO,
ZERO, ZERO, ZERO }
},
- { "kissy box",
+ { "ribbon",
{ PIN, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO, ZERO,
ZERO, PIN, ZERO, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO,
ZERO, PIN, ZERO }
},
- { "erect penis", /* thanks benno */
+ { "shuffle board", /* thanks benno */
{ PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, PIN,
PIN, ZERO, ZERO, ZERO, RIGHT, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO,
ZERO, ZERO }
},
- { "flaccid penis",
+ { "anchor",
{ PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, PIN,
PIN, ZERO, ZERO, ZERO, RIGHT, PIN, ZERO, ZERO, ZERO, ZERO, ZERO,
ZERO, ZERO }
},
- { "vagina",
+ { "engagement ring",
{ RIGHT, ZERO, ZERO, ZERO, RIGHT, ZERO, ZERO, PIN, ZERO, ZERO,
LEFT, ZERO, ZERO, ZERO, LEFT, ZERO, LEFT, PIN, LEFT, PIN, RIGHT,
PIN, RIGHT, ZERO }
@@ -999,7 +999,7 @@ static const struct model_s model[] = {
{ "Parrot",
{ ZERO, ZERO, ZERO, ZERO, RIGHT, RIGHT, ZERO, LEFT, PIN, RIGHT, ZERO, RIGHT, ZERO, RIGHT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, LEFT, ZERO, PIN, ZERO }
},
- { "Penis",
+ { "Shuttle",
{ PIN, PIN, RIGHT, ZERO, PIN, PIN, ZERO, PIN, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, PIN, ZERO, PIN, PIN, ZERO, LEFT, PIN, PIN, ZERO }
},
{ "PictureComingSoon",
--
2.29.2

42
SOURCES/xscreensaver-5.45-0002-asm6502.c-immediate-readd-free-call-accidentally-rem.patch

@ -0,0 +1,42 @@
From bc93d94efe27f6a42cfe1d5c5c5723565f3930de Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Thu, 10 Dec 2020 11:45:51 +0900
Subject: [PATCH] asm6502.c/immediate: readd free() call accidentally removed
during gcc warnings fix

valgrind detects the following leak:

==200428== 4,480 bytes in 56 blocks are definitely lost in loss record 307 of 310
==200428== at 0x483BAE9: calloc (vg_replace_malloc.c:760)
==200428== by 0x1122AB: UnknownInlinedFun (asm6502.c:115)
==200428== by 0x1122AB: UnknownInlinedFun (asm6502.c:1411)
==200428== by 0x1122AB: UnknownInlinedFun (asm6502.c:1576)
==200428== by 0x1122AB: UnknownInlinedFun (asm6502.c:1652)
==200428== by 0x1122AB: compileCode (asm6502.c:2028)
==200428== by 0x118602: UnknownInlinedFun (asm6502.c:2230)
==200428== by 0x118602: UnknownInlinedFun (m6502.c:93)
==200428== by 0x118602: m6502_draw (m6502.c:230)
==200428== by 0x10D9D7: UnknownInlinedFun (screenhack.c:597)
==200428== by 0x10D9D7: main (screenhack.c:991)

During gcc warnings fix (about -Wstringop), strncpy() is changed to sprintf, but the following
free() should not be removed, otherwise m6502 will leak memory.
---
hacks/asm6502.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/hacks/asm6502.c b/hacks/asm6502.c
index 1d5c896..dd8a11b 100644
--- a/hacks/asm6502.c
+++ b/hacks/asm6502.c
@@ -1413,6 +1413,7 @@ static BOOL immediate(char **s, Param *param){
(*s)++; /* move past < or > */
if (paramLabel(s, &label)){
sprintf(param->label, "%.*s", MAX_LABEL_LEN-1, label);
+ free(label);
return TRUE;
}
free(label);
--
2.29.2

33
SOURCES/xscreensaver-5.45-0003-beats-draw_beats-avoid-integer-overflow-by-multiplic.patch

@ -0,0 +1,33 @@
From dab3a04fbd2c4658614471cd4d8550ce0e0cef7b Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Thu, 10 Dec 2020 16:38:26 +0900
Subject: [PATCH] beats/draw_beats: avoid integer overflow by multiplication

gcc10 -fsanitize=undefined detects the following integer overflow:
------------------------------------------
../../../hacks/glx/beats.c:325:53: runtime error: signed integer overflow: 3665625 * 42587 cannot be represented in type 'int'
../../../hacks/glx/beats.c:326:21: runtime error: signed integer overflow: 1489149219 * 1233599 cannot be represented in type 'int'
------------------------------------------
Avoid this by using unsigned integer.
---
hacks/glx/beats.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hacks/glx/beats.c b/hacks/glx/beats.c
index 64fd689..19565ec 100644
--- a/hacks/glx/beats.c
+++ b/hacks/glx/beats.c
@@ -322,8 +322,8 @@ draw_beats (ModeInfo *mi)
}
}
/* pseudo-random generator based on current minute */
- timeSeed = (((tmM+1) * (tmM+1) * ((tmH+1) * 37) *
- ((tmD+1) * 1151) * 1233599) % 653);
+ timeSeed = (((tmM+1) * (tmM+1) * ((tmH+1) * 37ULL) *
+ ((tmD+1) * 1151ULL) * 1233599ULL) % 653);
cycle = timeSeed % 4;
if(bp->preset_cycle != -1){
cycle = bp->preset_cycle;
--
2.29.2

65
SOURCES/xscreensaver-5.45-0004-xscreensaver-systemd-fix-blurb-strncpy.patch

@ -0,0 +1,65 @@
From 2b1643d361274d52259820561747165af423a420 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Mon, 28 Dec 2020 15:14:30 +0900
Subject: [PATCH 4/6] xscreensaver-systemd: fix blurb strncpy

Shut up the following gcc11 -Wall warning:
---------------------------------------------
In function 'strncpy',
inlined from 'blurb' at ../../driver/xscreensaver-systemd.c:387:3:
/usr/include/bits/string_fortified.h:91:10: warning: 'strncpy' output may be truncated copying 8 bytes from a string of length 88 [-Wstringop-truncation]
---------------------------------------------

Note that the current blurb() implementation contains some code which is
actually not working. Currently:
---------------------------------------------
376 blurb (void)
377 {
378 static char buf[255];

386 ctime_r (&now, ct);
387 strncpy(buf+n, ct+11, 8);
388 strcpy(buf+n+9, ": ");
389 return buf;
390 }
---------------------------------------------
With the line 378, the contents of buf[] is all initialized to 0.
the line 388 strncpy() puts some string from ct to
buf[n+0], buf[n+1], ... , and buf[n+7] (8 bytes, not putting terminating
null character). Here buf[n+8] is still 0 (null character) because
buf[] is all initialized to 0.
The line 388 puts the string to buf[n+9] and buf[n+10], but as
buf[n+8] is still 0, the line 388 does essentially nothing.

Note that the other part of this file calls blurb() like:
----------------------------------------------
402 fprintf (stderr, "%s: exec: %s\n", blurb(), buf);
----------------------------------------------
i.e. "%s" always followed by ":" which compensates for the line 388.
---
driver/xscreensaver-systemd.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/driver/xscreensaver-systemd.c b/driver/xscreensaver-systemd.c
index 2da99de..f6bd104 100644
--- a/driver/xscreensaver-systemd.c
+++ b/driver/xscreensaver-systemd.c
@@ -378,14 +378,8 @@ blurb (void)
static char buf[255];
time_t now = time ((time_t *) 0);
char ct[100];
- int n = strlen(progname);
- if (n > 100) n = 99;
- strncpy(buf, progname, n);
- buf[n++] = ':';
- buf[n++] = ' ';
ctime_r (&now, ct);
- strncpy(buf+n, ct+11, 8);
- strcpy(buf+n+9, ": ");
+ sprintf(buf, "%.99s: %.8s", progname, ct+11);
return buf;
}
--
2.29.2

78
SOURCES/xscreensaver-5.45-0005-recanim.c-fix-up-Wformat-overflow-warning.patch

@ -0,0 +1,78 @@
From a93c17b054313f8ce0b0474942177a3aa646893b Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Mon, 28 Dec 2020 15:29:41 +0900
Subject: [PATCH 5/6] recanim.c: fix up -Wformat-overflow warning:

From gcc11 -Wall:
--------------------------------------------------------------
../../hacks/recanim.c: In function 'screenhack_record_anim_free':
../../hacks/recanim.c:435:12: warning: '%s' directive writing up to 1023 bytes into a region of size 968 [-Wformat-overflow=]
435 | " -c:v libx264"
| ^~~~~~~~~~~~~~~
......
442 | fn);
| ~~
../../hacks/recanim.c:439:15: note: format string is defined here
439 | " '%s'"
| ^~
--------------------------------------------------------------

To silence this warning, calculate the size of the string which is "supposed to be"
written and if the size is going to be oversized, exit abnormally.
---
hacks/recanim.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/hacks/recanim.c b/hacks/recanim.c
index b1c7e0a..bf9084c 100644
--- a/hacks/recanim.c
+++ b/hacks/recanim.c
@@ -391,6 +391,7 @@ screenhack_record_anim_free (record_anim_state *st)
const char *type = "png";
char cmd[1024];
char fn[1024];
+ size_t len_cmd;
const char *soundtrack = 0;
fprintf (stderr, "%s: wrote %d frames\n", progname, st->frame_count);
@@ -417,7 +418,8 @@ screenhack_record_anim_free (record_anim_state *st)
if (! soundtrack) soundtrack = "../../" ST;
if (stat (soundtrack, &s)) soundtrack = 0;
- sprintf (cmd,
+ len_cmd = 0;
+ len_cmd += snprintf (cmd, sizeof cmd - len_cmd,
"ffmpeg"
" -hide_banner"
" -loglevel error"
@@ -425,13 +427,16 @@ screenhack_record_anim_free (record_anim_state *st)
" -i '%s-%%06d.%s'"
" -r %d", /* rate of output: must be after -i */
st->fps, progname, type, st->fps);
- if (soundtrack)
- sprintf (cmd + strlen(cmd),
+ if (len_cmd >= sizeof cmd) abort();
+ if (soundtrack) {
+ len_cmd += snprintf (cmd + len_cmd, sizeof cmd - len_cmd,
" -i '%s' -map 0:v:0 -map 1:a:0 -acodec aac"
/* Truncate or pad audio to length of video */
" -filter_complex '[1:0] apad' -shortest",
soundtrack);
- sprintf (cmd + strlen(cmd),
+ if (len_cmd >= sizeof cmd) abort();
+ }
+ len_cmd += snprintf (cmd + len_cmd, sizeof cmd - len_cmd,
" -c:v libx264"
" -profile:v high"
" -crf 18"
@@ -440,6 +445,7 @@ screenhack_record_anim_free (record_anim_state *st)
" </dev/null"
/*" 2>&-"*/,
fn);
+ if (len_cmd >= sizeof cmd) abort();
fprintf (stderr, "%s: exec: %s\n", progname, cmd);
/* Use empty body to kill warning from gcc -Wall with
"warning: ignoring return value of 'system',
--
2.29.2

33
SOURCES/xscreensaver-5.45-0006-asm6502.c-newAsmLine-shut-up-Wstringop-warning.patch

@ -0,0 +1,33 @@
From 2a744c80fb0e8ec22c1b7d3656f7cbdcad2f3fef Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Mon, 28 Dec 2020 15:31:38 +0900
Subject: [PATCH 6/6] asm6502.c/newAsmLine: shut up -Wstringop warning

Shut up the following warning by gcc11 -Wall:
----------------------------------------------------------
In function 'strncpy',
inlined from 'newAsmLine' at ../../hacks/asm6502.c:1181:5,
inlined from 'parseAssembly' at ../../hacks/asm6502.c:1661:14,
inlined from 'compileCode' at ../../hacks/asm6502.c:2029:13:
/usr/include/bits/string_fortified.h:91:10: warning: 'strncpy' specified bound 80 equals destination size [-Wstringop-truncation]
----------------------------------------------------------
---
hacks/asm6502.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hacks/asm6502.c b/hacks/asm6502.c
index dd8a11b..28a85d1 100644
--- a/hacks/asm6502.c
+++ b/hacks/asm6502.c
@@ -1178,7 +1178,7 @@ static AsmLine *newAsmLine(char *cmd, char *label, BOOL decl, Param *param, int
newp = (AsmLine *) ecalloc(1, sizeof(AsmLine));
newp->labelDecl = decl;
newp->label = newLabel();
- strncpy(newp->label->label,label,MAX_LABEL_LEN);
+ sprintf(newp->label->label, "%.*s", MAX_LABEL_LEN - 1, label);
newp->command = estrdup(cmd);
newp->param = newParam();
copyParam(newp->param, param);
--
2.29.2

54
SOURCES/xscreensaver-5.45-0007-lock.c-draw_passwd_window-show-logo-and-ok-button.patch

@ -0,0 +1,54 @@
From 0638fb6fca4b10120d08e5b1d546dea0013faa07 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Mon, 28 Dec 2020 18:03:25 +0900
Subject: [PATCH] lock.c/draw_passwd_window: show logo and ok button

On Fedora 33 and on some environment, user may see the issue on
lock screen:
* xscreensaver logo is not shown
* ok and new login buttons are not shown

To fix these issue, two modifications seem needed.
* Calling XSync() is needed to make ok button appear
* draw_shaded_rectangle() on the whole window must be called before
painting logo
---
driver/lock.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/driver/lock.c b/driver/lock.c
index 8bcd2e0..7133dc0 100644
--- a/driver/lock.c
+++ b/driver/lock.c
@@ -750,6 +750,12 @@ draw_passwd_window (saver_info *si)
x3 = pw->width - (pw->shadow_width * 2);
y1 = (pw->shadow_width * 2) + spacing + spacing;
+ /* The shadow around the whole window
+ */
+ draw_shaded_rectangle (si->dpy, si->passwd_dialog,
+ 0, 0, pw->width, pw->height, pw->shadow_width,
+ pw->shadow_top, pw->shadow_bottom);
+
/* top heading
*/
XSetFont (si->dpy, gc1, pw->heading_font->fid);
@@ -994,14 +1000,9 @@ draw_passwd_window (saver_info *si)
pw->thermo_width - 1, pw->thermo_field_height - 1);
#endif
- /* The shadow around the whole window
- */
- draw_shaded_rectangle (si->dpy, si->passwd_dialog,
- 0, 0, pw->width, pw->height, pw->shadow_width,
- pw->shadow_top, pw->shadow_bottom);
-
XFreeGC (si->dpy, gc1);
XFreeGC (si->dpy, gc2);
+ XSync (si->dpy, False);
update_passwd_window (si, pw->passwd_string, pw->ratio);
}
--
2.29.2

33
SOURCES/xscreensaver-5.45-0051-test-screens.c-add-skel-XA_SCREENSAVER_VERSION-defin.patch

@ -0,0 +1,33 @@
From 9b948db8377c0ac146eae2d865c987e73d9109ad Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Fri, 11 Dec 2020 10:40:09 +0900
Subject: [PATCH] test-screens.c: add skel XA_SCREENSAVER_VERSION definition

To avoid the following link error:
----------------------------------------------------
/usr/bin/ld: test-screens.o: in function `update_screen_layout':
/builddir/build/BUILD/xscreensaver-5.45/x86_64-pc-linux-gnu/driver/../../driver/screens.c:1104: undefined reference to `XA_SCREENSAVER_VERSION'
collect2: error: ld returned 1 exit status
----------------------------------------------------

On xscreensaver-5.45, in screens.c/update_screen_layout some logic is added using
XA_SCREENSAVER_VERSION .
---
driver/test-screens.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/driver/test-screens.c b/driver/test-screens.c
index 2fb3e35..c5dfa02 100644
--- a/driver/test-screens.c
+++ b/driver/test-screens.c
@@ -39,6 +39,7 @@
char *progname = 0;
char *progclass = "XScreenSaver";
+Atom XA_SCREENSAVER_VERSION;
const char *blurb(void) { return progname; }
--
2.29.2

31
SOURCES/xscreensaver-5.45-1001-test-password.c-add-skel-definition-for-clientmessa.patch

@ -0,0 +1,31 @@
From bcb4b5355e73274722a6169dfa4f532353b3d6a7 Mon Sep 17 00:00:00 2001
From: XScreenSaver owners <xscreensaver-owner@fedoraproject.org>
Date: Wed, 9 Dec 2020 22:35:55 +0900
Subject: [PATCH] test-password.c: add skel definition for
clientmessage_response

Fix below

/usr/bin/ld: /tmp/test-passwd.BnNU2t.ltrans0.ltrans.o: in function `passwd_event_loop':
/foo/xscreensaver-5.45/x86_64-pc-linux-gnu/driver/../../driver/lock.c:1937: undefined reference to `clientmessage_response'
collect2: error: ld returned 1 exit status
make: *** [Makefile:842: test-passwd] Error 1
---
driver/test-passwd.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/driver/test-passwd.c b/driver/test-passwd.c
index 9b4f98e..1c4dccc 100644
--- a/driver/test-passwd.c
+++ b/driver/test-passwd.c
@@ -67,6 +67,7 @@ void describe_monitor_layout (saver_info *si) { }
Bool update_screen_layout (saver_info *si) { return 0; }
Bool in_signal_handler_p = 0;
char *timestring (time_t when) { return ""; }
+void clientmessage_response (saver_info *si, Window w, Bool error, const char *stderr_msg, const char *protocol_msg) {}
const char *blurb(void) { return progname; }
Atom XA_SCREENSAVER, XA_DEMO, XA_PREFS;
--
2.29.2

65
SOURCES/xscreensaver-6.00-0001-screensaver_id-search-parenthesis-first-for-searchin.patch

@ -0,0 +1,65 @@
From ef72c9500015a36bf0b4b412337ec2d890d092b6 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Fri, 2 Apr 2021 18:46:14 +0900
Subject: [PATCH] screensaver_id: search parenthesis first for searching year

Fedora package modifies screensaver_id string to %%version-%%release .
Adjust window_init function so that "year" information is
parsed correctly.
---
driver/demo-Gtk.c | 4 +++-
driver/dialog.c | 4 +++-
driver/xscreensaver-systemd.c | 4 +++-
3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/driver/demo-Gtk.c b/driver/demo-Gtk.c
index b5e82e2..3874045 100644
--- a/driver/demo-Gtk.c
+++ b/driver/demo-Gtk.c
@@ -779,8 +779,10 @@ about_menu_cb (GtkAction *menu_action, gpointer user_data)
char *desc = _("For updates, check https://www.jwz.org/xscreensaver/");
char *version = strdup (screensaver_id + 17);
- char *year = strchr (version, '-');
+ char *year;
char *s = strchr (version, ' ');
+ year = strchr (version, '('); /* Search parenthesis first */
+ year = strchr (year, '-');
*s = 0;
year = strchr (year+1, '-') + 1;
s = strchr (year, ')');
diff --git a/driver/dialog.c b/driver/dialog.c
index fce74c4..9a8173f 100644
--- a/driver/dialog.c
+++ b/driver/dialog.c
@@ -949,8 +949,10 @@ window_init (Widget root_widget, Bool splash_p)
/* Put the version number in the label. */
{
char *version = strdup (screensaver_id + 17);
- char *year = strchr (version, '-');
+ char *year;
char *s = strchr (version, ' ');
+ year = strchr (version, '('); /* Search parenthesis first */
+ year = strchr (year, '-');
*s = 0;
year = strchr (year+1, '-') + 1;
s = strchr (year, ')');
diff --git a/driver/xscreensaver-systemd.c b/driver/xscreensaver-systemd.c
index d06174a..c9a66a1 100644
--- a/driver/xscreensaver-systemd.c
+++ b/driver/xscreensaver-systemd.c
@@ -950,8 +950,10 @@ main (int argc, char **argv)
{
int i;
char *version = strdup (screensaver_id + 17);
- char *year = strchr (version, '-');
+ char *year;
char *s = strchr (version, ' ');
+ year = strchr (version, '('); /* Search parenthesis first */
+ year = strchr (year, '-');
*s = 0;
year = strchr (year+1, '-') + 1;
s = strchr (year, ')');
--
2.31.1

30
SOURCES/xscreensaver-6.00-0002-xscreensaver-text-use-en_US-locale-for-lscpu.patch

@ -0,0 +1,30 @@
From 7b256829ce730ab93b76e4f4f2e72f0132122ba1 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Mon, 3 May 2021 14:43:56 +0900
Subject: [PATCH] xscreensaver-text use en_US locale for lscpu

Downstream bug: https://bugzilla.redhat.com/show_bug.cgi?id=1956089
xscreensaver-text in version 6.00 adds CPU model detection, using
lscpu command utility and using regex.
Since regex string is locale-independent, the result of lscpu should be
locale-independent. For now, let's use en_US "LANGUAGE".
---
hacks/xscreensaver-text | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hacks/xscreensaver-text b/hacks/xscreensaver-text
index 421fae7..645bdd0 100755
--- a/hacks/xscreensaver-text
+++ b/hacks/xscreensaver-text
@@ -428,7 +428,7 @@ sub output() {
# we're running on. This info also exists in various /proc/ files,
# but if /proc/ exists, lscpu probably exists as well.
#
- my $cpu = `lscpu 2>&-`;
+ my $cpu = `env LANGUAGE=en_US lscpu 2>&-`;
if ($cpu) {
my ($model) = ($cpu =~ m/^Model name:\s*(.*)$/mi);
#my ($arch) = ($cpu =~ m/^Architecture:\s*(.*)$/mi);
--
2.31.1

27
SOURCES/xscreensaver-6.00-0003-dialog.c-window_init-show-more-version-string.patch

@ -0,0 +1,27 @@
From 13e1203d8cc00a8462dbd2656257b46b411b2854 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Mon, 3 May 2021 15:00:31 +0900
Subject: [PATCH] dialog.c: window_init: show more version string

Fedora modifies version string to "6.00-1.fc34" to show rpm "release", for example.
Let's allow more length for version string for password dialog.
---
driver/dialog.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/driver/dialog.c b/driver/dialog.c
index 9a8173f..3020880 100644
--- a/driver/dialog.c
+++ b/driver/dialog.c
@@ -959,7 +959,7 @@ window_init (Widget root_widget, Bool splash_p)
*s = 0;
ws->heading_label = (char *) malloc (100);
ws->version = strdup(version);
- sprintf (ws->heading_label, "XScreenSaver %.4s, v%.10s", year, version);
+ sprintf (ws->heading_label, "XScreenSaver %.4s, v%.14s", year, version);
if (splash_p)
{
--
2.31.1

59
SOURCES/xscreensaver-6.00-0004-fontglide.c-pick_font_1-exclude-substitution-rectagl.patch

@ -0,0 +1,59 @@
From 1c66f1de86cd3cd360cf3c8de371126a9e1e9fc9 Mon Sep 17 00:00:00 2001
From: XScreenSaver owners <xscreensaver-owner@fedoraproject.org>
Date: Mon, 3 May 2021 21:33:26 +0900
Subject: [PATCH] fontglide.c: pick_font_1 exclude substitution rectagle glyph

Currently (with using XFT) pick_font_1 picks up one font randomly
from all installed fonts, according to XftListFonts.
So when some non-latin fonts are installed and selected by pick_font_1,
(e.g. Lohit-Gujarati.ttf: used for Gujarati language, part of India)
such font may fail to show strings returned by xscreensaver-text
correctly, and may show substitusion rectagle glyph.

So to select a font which can show glyph properly, use XftCharExists
(ref: blank_character_p in texfont.c)

Also, to show debug message correctly with /* DEBUG */ defined,
copy name2 to pattern.
---
hacks/fontglide.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)

diff --git a/hacks/fontglide.c b/hacks/fontglide.c
index 3eff604..be1ac63 100644
--- a/hacks/fontglide.c
+++ b/hacks/fontglide.c
@@ -270,6 +270,7 @@ pick_font_1 (state *s, sentence *se)
/* #### This gets a link error with FcFontSetDestroy missing. */
/* if (fs) XftFontSetDestroy (fs); */
+ sprintf(pattern, "%s", name2);
se->xftfont = font;
ok = True;
goto DONE_2;
@@ -571,6 +572,22 @@ pick_font_1 (state *s, sentence *se)
}
}
+# if defined(HAVE_XFT) && !defined(HAVE_JWXYZ) /* Real Xft under real X11 */
+ {
+ unsigned long uc = 0;
+ utf8_decode ((const unsigned char *)"M", 1, &uc);
+ if (!XftCharExists (s->dpy, se->xftfont, (FcChar32) uc))
+ {
+# ifdef DEBUG
+ if (s->debug_p)
+ fprintf (stderr, "%s: skipping font returning substitution rectangle: %s\n",
+ progname, pattern2);
+#endif
+ return False;
+ }
+ }
+# endif
+
# ifdef DEBUG
if (s->debug_p)
--
2.31.1

55
SOURCES/xscreensaver-6.00-0005-blurb-show-1-100-sec-on-linux.patch

@ -0,0 +1,55 @@
From 6c6c990727caa881b7b3f045dfaa0a167d347507 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Tue, 4 May 2021 09:58:54 +0900
Subject: [PATCH] blurb: show 1/100 sec on linux

---
driver/blurb.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/driver/blurb.c b/driver/blurb.c
index d732a9b..010923b 100644
--- a/driver/blurb.c
+++ b/driver/blurb.c
@@ -28,8 +28,23 @@ blurb (void)
struct tm tm;
time_t now;
int i;
+#ifdef __linux__
+ struct timespec tp;
+ unsigned int sec_per_100 = 0;
+#endif
+
+#ifdef __linux__
+ if ( (clock_gettime(CLOCK_REALTIME_COARSE, &tp)) == 0 )
+ {
+ now = tp.tv_sec;
+ sec_per_100 = tp.tv_nsec / 10000000; /* 10^9 / 10^7 */
+ }
+ else
+#endif
+ {
+ now = time ((time_t *) 0);
+ }
- now = time ((time_t *) 0);
localtime_r (&now, &tm);
i = strlen (progname);
if (i > 40) i = 40;
@@ -44,6 +59,13 @@ blurb (void)
buf[i++] = ':';
buf[i++] = '0' + (tm.tm_sec >= 10 ? tm.tm_sec/10 : 0);
buf[i++] = '0' + (tm.tm_sec % 10);
+
+#ifdef __linux__
+ buf[i++] = '.';
+ buf[i++] = '0' + (sec_per_100 >= 10 ? sec_per_100/10 : 0);
+ buf[i++] = '0' + (sec_per_100 % 10);
+#endif
+
buf[i] = 0;
return buf;
}
--
2.31.1

53
SOURCES/xscreensaver-6.00-0007-fontglide.c-drain_input-terminate-with-null-explicit.patch

@ -0,0 +1,53 @@
From 3837ddc61ca11a811444e32bb8b248947d83807f Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Wed, 5 May 2021 23:23:48 +0900
Subject: [PATCH] fontglide.c: drain_input: terminate with null explicitly

Currently, when launching fontglide for some long time, fontglide comes to
no longer show any characters.

get_word_text() logic apparently expects that s->buf (where s is state *)
ends with null character.
struct state is initialized with calloc(), so at the first s->buf is initialized
with all zero, so at the first s->buf is terminated with null character.
However sometimes s->buf is memmove()ed in get_word_text(), and the next time
get_word_text() fills s->buf and s->buf_tail is increased.
At the time, s->buf[s->buf_tail] can be non-null character.

After all, sometimes at the end of get_word_text(), s->buf_tail can be negative
(i.e. "start" and "end" in get_word_text() point to some unexpected positions).
When that happens, in drain_input(), the condition
"s->buf_tail < sizeof(s->buf) - 2" gets "false", because "sizeof" returns
"size_t", which is unsigned, so s->buf_tail gets very large integer.
So the contents of s->buf will no longer be updated.
As the result, fontglide will no longer show any characters on the screen.

To avoid the above bug, explicitly make s->buf terminate with null on
drain_input.
---
hacks/fontglide.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/hacks/fontglide.c b/hacks/fontglide.c
index be1ac63..b99b1d1 100644
--- a/hacks/fontglide.c
+++ b/hacks/fontglide.c
@@ -698,6 +698,7 @@ get_word_text (state *s)
int n = end - s->buf;
memmove (s->buf, end, sizeof(s->buf) - n);
s->buf_tail -= n;
+ if (s->buf_tail < 0) abort();
}
return result;
@@ -2283,6 +2284,7 @@ drain_input (state *s)
else
break;
}
+ s->buf[s->buf_tail] = 0;
}
--
2.31.1

100
SOURCES/xscreensaver-6.01-0001-main_loop-consistently-check-init-file-after-some-ac.patch

@ -0,0 +1,100 @@
From 63b985a5aae04b89f6a4357cb10dfeba9f482cd7 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Tue, 6 Jul 2021 22:27:21 +0900
Subject: [PATCH 1/2] main_loop: consistently check init file after some
activitity occurred.

Current main_loop logic is:
* Block until some activity happens or timeout happens,
timeout is until last activity + blank_timeout
* When block is released, if 60sec has already passed since the last
time init file is checked, init file is checked again.

So:
* When a user has been editing init file for some long time,
activity has been occuring.
In this case, init file is checked every 60sec.
* However when:
- on "a" time init file is checked
- user edits init file, shortly
- then user stops activity
then the edited init file won't checked until last activity + blank_timeout
(because block won't be released until that time)

This behavior is inconsistent.

With this patch,
* When block is released, if 45sec (instead of 60sec) has already passed since the last
time init file is checked, init file is checked again.
* When some activity happens, main_loop is next blocked until some activity
happens or timeout, timeout is until last activity + 50sec, which
is shorter than activity + blank_timeout, because blank_timeout is more than 60sec.

Then when user stops activity, init file is checked again after 50sec (block is released),
so it is guaranteed that init file change is checked before 1min, when user may expect
blanking happens (when user changes init file so that blank should happen after 1 min).
So this behavior is consistent.
---
driver/xscreensaver.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/driver/xscreensaver.c b/driver/xscreensaver.c
index bfce5f7..24ea27c 100644
--- a/driver/xscreensaver.c
+++ b/driver/xscreensaver.c
@@ -1388,6 +1388,7 @@ main_loop (Display *dpy)
time_t last_checked_init_file = now;
Bool authenticated_p = False;
Bool ignore_motion_p = False;
+ Bool maybe_init_file_changed_p = False;
enum { UNBLANKED, BLANKED, LOCKED, AUTH } current_state = UNBLANKED;
@@ -1471,7 +1472,12 @@ main_loop (Display *dpy)
struct timeval tv;
time_t until;
switch (current_state) {
- case UNBLANKED: until = active_at + blank_timeout; break;
+ case UNBLANKED:
+ {
+ until = active_at + blank_timeout;
+ if (maybe_init_file_changed_p) until = active_at + 50;
+ break;
+ }
case BLANKED: until = blanked_at + lock_timeout; break;
default: until = 0;
}
@@ -1502,6 +1508,7 @@ main_loop (Display *dpy)
}
now = time ((time_t *) 0);
+ maybe_init_file_changed_p = False;
/********************************************************************
@@ -1566,6 +1573,7 @@ main_loop (Display *dpy)
XEvent xev;
XNextEvent (dpy, &xev);
now = time ((time_t *) 0);
+ maybe_init_file_changed_p = True;
/****************************************************************
Client Messages
@@ -1905,12 +1913,13 @@ main_loop (Display *dpy)
/* If it's time, see if the .xscreensaver file has changed, since that
might change the blank and lock timeouts.
*/
- if (now >= last_checked_init_file + 60)
+ if (now >= last_checked_init_file + 45)
{
last_checked_init_file = now;
if (verbose_p)
fprintf(stderr,"%s: checking init file\n", blurb());
read_init_files (False);
+ maybe_init_file_changed_p = False;
}
/* Now that events have been processed, see if the state should change,
--
2.31.1

95
SOURCES/xscreensaver-6.01-0002-main_loop-check-init-file-saver_mode.patch

@ -0,0 +1,95 @@
From 721236d9406c5ecba9e95edff6f4105799968596 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Tue, 6 Jul 2021 23:38:11 +0900
Subject: [PATCH 2/2] main_loop: check init file saver_mode

With xscreensaver 6 saver/gfx split, -gfx checks saver_mode, but
currently saver does not check saver_mode.
As a result, even if user has set saver_mode to "off" in init file,
saver will blank screen.

With this patch, saver will check saver_mode again.
---
driver/xscreensaver.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/driver/xscreensaver.c b/driver/xscreensaver.c
index 24ea27c..1c88a00 100644
--- a/driver/xscreensaver.c
+++ b/driver/xscreensaver.c
@@ -140,6 +140,7 @@
#include <X11/cursorfont.h>
#include <X11/Xos.h>
#include <X11/extensions/XInput2.h>
+#include <X11/Intrinsic.h>
#include "xmu.h"
#include "blurb.h"
@@ -147,6 +148,7 @@
#include "clientmsg.h"
#include "xinput.h"
#include "prefs.h"
+#include "types.h"
#undef countof
@@ -171,6 +173,7 @@ static Bool locking_disabled_p = False;
static unsigned int blank_timeout = 0;
static unsigned int lock_timeout = 0;
static unsigned int pointer_hysteresis = 0;
+static saver_mode mode_pref = ONE_HACK;
/* Subprocesses. */
#define SAVER_GFX_PROGRAM "xscreensaver-gfx"
@@ -677,6 +680,19 @@ parse_time (const char *string)
return ((h * 60 * 60) + (m * 60) + s);
}
+/* Mostly copied from prefsw.c.
+*/
+static int
+parse_mode (const char *s)
+{
+ /* most copied from */
+ if (s && !strcasecmp (s, "one")) return ONE_HACK;
+ else if (s && !strcasecmp (s, "blank")) return BLANK_ONLY;
+ else if (s && !strcasecmp (s, "off")) return DONT_BLANK;
+ else if (s && !strcasecmp (s, "random-same")) return RANDOM_HACKS_SAME;
+ else return RANDOM_HACKS;
+}
+
/* This program only needs a very few options from the init file, so it
just reads the .ad file and the .xscreensaver file directly rather
@@ -705,6 +721,7 @@ static void init_line_handler (int lineno,
if (i >= 0)
pointer_hysteresis = i;
}
+ if (!strcmp (key, "mode")) mode_pref = parse_mode(val);
}
static void
@@ -1947,7 +1964,8 @@ main_loop (Display *dpy)
force_lock_p = False; /* Single shot */
}
else if (force_blank_p ||
- now >= active_at + blank_timeout)
+ ((mode_pref != DONT_BLANK) &&
+ (now >= active_at + blank_timeout)))
{
fprintf (stderr, "%s: blanking\n", blurb());
if (grab_keyboard_and_mouse (mouse_screen (dpy)))
@@ -1960,6 +1978,10 @@ main_loop (Display *dpy)
fprintf (stderr, "%s: unable to grab -- blanking aborted!\n",
blurb());
}
+ else if ((mode_pref == DONT_BLANK) && (now >= active_at + blank_timeout))
+ {
+ fprintf (stderr, "%s: blanking disabled\n", blurb());
+ }
if (current_state == BLANKED || current_state == LOCKED)
{
--
2.31.1

97
SOURCES/xscreensaver-6.01-0003-window_init-check-if-asterisk-font-is-available-and-.patch

@ -0,0 +1,97 @@
From fc353003f93883bf62a9865472e6f206a62b09f1 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Thu, 8 Jul 2021 23:06:46 +0900
Subject: [PATCH] window_init: check if asterisk font is available and provide
fallback character

Downstream bug: https://bugzilla.redhat.com/show_bug.cgi?id=1980173
On Fedora 34, using US locale (LANG=en_US.UTF-8), when both
"dejavu-sans-fonts" and "bitstream-vera-sans-fonts" rpms are installed,
* xscreensaver-auth requests "sans-serif" to xft
* xft chooses bitstream-vera-sans (according to fontconfig settings)
45-latin.conf seems to be saying so.
* gucharmap shows that while "dejavu-sans-fonts" contains glyph for "U+25CF",
however bitstream-vera-sans-fonts does not.
Then such people sees white rectangles when typing password.

For now, check if corresponding font is available, and if not, provide
fallback character
---
driver/dialog.c | 33 ++++++++++++++++++++++++++++++---
1 file changed, 30 insertions(+), 3 deletions(-)

diff --git a/driver/dialog.c b/driver/dialog.c
index 7f1ec8b..a17e9af 100644
--- a/driver/dialog.c
+++ b/driver/dialog.c
@@ -79,6 +79,7 @@
#include "font-retry.h"
#include "prefs.h"
#include "usleep.h"
+#include "utf8wc.h"
extern Bool debug_p;
@@ -193,6 +194,7 @@ struct window_state {
char *date_format;
char *kbd_layout_label;
char *newlogin_cmd;
+ const char *asterisk_utf8;
/* Resources for fonts and colors */
XftDraw *xftdraw;
@@ -674,6 +676,31 @@ get_int (window_state *ws, const char *name, const char *rclass)
return get_integer_resource (ws->dpy, (char *) name, (char *) rclass);
}
+static const char *pickup_asterisk_utf8 (window_state *ws)
+{
+ static char picked_string[8];
+ const unsigned long uc_list[] = {
+ 0x25CF, /* Black Circle */
+ 0x2022, /* Bullet */
+ '*' /* Fallback */
+ };
+ const unsigned long *uc_cand = uc_list;
+ int encoded_length;
+ size_t index;
+
+ /* -1 is so that result will pick up fallback string as a last resort */
+ for (index = 0; index < sizeof uc_list / sizeof *uc_list - 1; index++) {
+ /* borrowed from blank_character_p in texfont.c */
+ if (XftCharExists (ws->dpy, ws->label_font, (FcChar32) *uc_cand)) break;
+ uc_cand++;
+ }
+
+ encoded_length = utf8_encode(*uc_cand, picked_string, sizeof picked_string - 1);
+ picked_string[encoded_length] = 0;
+
+ return picked_string;
+}
+
/* Decide where on the X11 screen to place the dialog.
This is complicated because, in the face of RANDR and Xinerama, we want
@@ -983,6 +1010,8 @@ window_init (Widget root_widget, Bool splash_p)
ws->label_font = get_font (ws, "labelFont");
ws->date_font = get_font (ws, "dateFont");
ws->hostname_font = get_font (ws, "unameFont");
+
+ ws->asterisk_utf8 = pickup_asterisk_utf8(ws);
ws->foreground = get_color (ws, "foreground", "Foreground");
ws->background = get_color (ws, "background", "Background");
@@ -2003,9 +2032,7 @@ handle_keypress (window_state *ws, XKeyEvent *event)
*out = 0;
for (i = 0; i < MAX_PASSWD_CHARS && ws->plaintext_passwd_char_size[i]; i++)
{
- const char *b = /* "\xE2\x80\xA2"; */ /* U+2022 Bullet */
- "\xe2\x97\x8f"; /* U+25CF Black Circle */
- strcat (out, b);
+ strcat (out, ws->asterisk_utf8);
out += strlen(out);
}
}
--
2.31.1

56
SOURCES/xscreensaver-6.01-0004-destroy_window-check-ws-xftdraw-to-avoid-nullptr-der.patch

@ -0,0 +1,56 @@
From 6af675deb2bac3cce2dcdb9b19cce23d946d680a Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Sun, 11 Jul 2021 14:28:57 +0900
Subject: [PATCH] destroy_window: check ws->xftdraw to avoid nullptr
dereference

Downstream report:
https://bugzilla.redhat.com/show_bug.cgi?id=1966287

There was a bug report that xscreensaver-auth segfaults that
"
when resuming from suspension, sometimes the screen is
blank and only the cursor is visible and responds to movement.
"
and crash detector says xscreensaver-auth was segfaulting like:

===================================================================
(gdb) bt
#0 0x00007f83a9a46715 in XftDrawDestroy (draw=0x0) at
/usr/src/debug/libXft-2.3.3-6.fc34.x86_64/src/xftdraw.c:278
#1 0x000055d0754f9c6e in destroy_window (ws=0x55d076c04c80) at
../../driver/dialog.c:1764
#2 0x000055d07550027e in xscreensaver_auth_finished (closure=<optimized out>,
authenticated_p=<optimized out>) at ../../driver/dialog.c:2499
#3 0x000055d0754f5e16 in xscreensaver_auth (conv_fn=<optimized out>,
finished_fn=<optimized out>, closure=<optimized out>) at
../../driver/passwd.c:266
#4 main (argc=<optimized out>, argv=<optimized out>) at
../../driver/xscreensaver-auth.c:324
===================================================================

This means that when doing "XftDrawDestroy (ws->xftdraw);" in destroy_window(),
ws->xftdraw is null.

Currently I cannot figure out why this can happen, however for now
I add a nullptr check to avoid this...
---
driver/dialog.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/driver/dialog.c b/driver/dialog.c
index a17e9af..1f2c957 100644
--- a/driver/dialog.c
+++ b/driver/dialog.c
@@ -1790,7 +1790,7 @@ destroy_window (window_state *ws)
XftColorFree (ws->dpy, DefaultVisualOfScreen (ws->screen),
DefaultColormapOfScreen (ws->screen),
&ws->xft_error_foreground);
- XftDrawDestroy (ws->xftdraw);
+ if (ws->xftdraw) XftDrawDestroy (ws->xftdraw);
# if 0 /* screw this, we're exiting anyway */
if (ws->foreground != black && ws->foreground != white)
--
2.31.1

311
SPECS/xscreensaver.spec

@ -1,9 +1,23 @@
%define name xscreensaver %define name xscreensaver
%define mainversion 5.44
%define mainversion 5.45
%define beta_ver %{nil} %define beta_ver %{nil}


%define modular_conf 1 %define modular_conf 1
%define split_getimage 0
%if 0%{?fedora} >= 14 || 0%{?el7} || 0%{?el8}
%define split_getimage 1 %define split_getimage 1
%define fedora_rel 1 %endif

%define enable_appres 1
%if 0%{?el7} || 0%{?el8}
# EL does not have appres
%define enable_appres 0
%endif

%define fedora_rel 5

%global use_clang_as_cc 0 %global use_clang_as_cc 0
%global use_clang_analyze 0 %global use_clang_analyze 0
%global use_cppcheck 0 %global use_cppcheck 0
@ -11,6 +25,7 @@
%global use_gcc_trap_on_sanitize 0 %global use_gcc_trap_on_sanitize 0
%global use_gcc_analyzer 0 %global use_gcc_analyzer 0
%undefine extrarel %undefine extrarel

%global flagrel %{nil} %global flagrel %{nil}
%if 0%{?use_cppcheck} >= 1 %if 0%{?use_cppcheck} >= 1
%global flagrel %{flagrel}.cppcheck %global flagrel %{flagrel}.cppcheck
@ -19,18 +34,38 @@
%global flagrel %{flagrel}.san %global flagrel %{flagrel}.san
%endif %endif



# EPEL6 # EPEL6
%{!?__git:%define __git git} %{!?__git:%define __git git}


%if 0%{?fedora}
%define default_text %{_sysconfdir}/fedora-release
%else
%define default_text %{_sysconfdir}/system-release %define default_text %{_sysconfdir}/system-release
%endif
%define default_URL http://planet.fedoraproject.org/rss20.xml %define default_URL http://planet.fedoraproject.org/rss20.xml

%define pam_ver 0.80-7 %define pam_ver 0.80-7
%define autoconf_ver 2.53 %define autoconf_ver 2.53

%define update_po 1 %define update_po 1
%define build_tests 0 %define build_tests 0

%global support_setcap 0 %global support_setcap 0
%if 0%{?fedora} >= 31 || 0%{?el7} > 0|| 0%{?el8} > 0
# TODO write selinux policy for selinux-policy-mls
# (currently works with selinux-policy-targeted)
#%%global support_setcap 1
%endif
# enable xscreensaver-systemd for F-33
%global support_systemd 0
%if 0%{?fedora} >= 33 || 0%{?el7} || 0%{?el8}
%global support_systemd 1
%endif

%undefine _changelog_trimtime %undefine _changelog_trimtime



Summary: X screen saver and locker Summary: X screen saver and locker
Name: %{name} Name: %{name}
Version: %{mainversion} Version: %{mainversion}
@ -42,30 +77,47 @@ Source0: http://www.jwz.org/xscreensaver/xscreensaver-%{mainversion}%{?b
%if %{modular_conf} %if %{modular_conf}
Source10: update-xscreensaver-hacks Source10: update-xscreensaver-hacks
%endif %endif
%if 0%{?fedora} >= 12 || 0%{?el7} || 0%{?el8}
Source11: xscreensaver-autostart Source11: xscreensaver-autostart
Source12: xscreensaver-autostart.desktop Source12: xscreensaver-autostart.desktop
%endif
# wrapper script for switching user (bug 1878730)
Source13: xscreensaver-newlogin-wrapper
## ##
## Patches ## Patches
## ##
# bug 129335 # bug 129335
Patch1: xscreensaver-5.44-0001-barcode-glsnake-sanitize-the-names-of-modes.patch Patch1: xscreensaver-5.45-0001-barcode-glsnake-sanitize-the-names-of-modes.patch
## Patches already sent to the upsteam ## Patches already sent to the upsteam
## Patches which must be discussed with upstream ## Patches which must be discussed with upstream
# See bug 472061 # See bug 472061
Patch21: xscreensaver-5.35-webcollage-default-nonet.patch Patch21: xscreensaver-5.35-webcollage-default-nonet.patch
# Patch to compile driver/test-xdpms # Patch to compile driver/test-xdpms
Patch52: xscreensaver-5.44-0002-Patch-to-compile-driver-test-xdpms.patch Patch52: xscreensaver-5.44-0002-Patch-to-compile-driver-test-xdpms.patch
# #
# init_crystal: kill gcc7 -Wint-in-bool-context
Patch3604: xscreensaver-5.36-0004-init_crystal-kill-gcc7-Wint-in-bool-context.patch
# misc: kill gcc warn_unused_result warnings # misc: kill gcc warn_unused_result warnings
Patch3607: xscreensaver-5.36-0007-misc-kill-gcc-warn_unused_result-warnings.patch Patch3607: xscreensaver-5.36-0007-misc-kill-gcc-warn_unused_result-warnings.patch
# open new window for man when using gnome-terminal # open new window for man when using gnome-terminal
Patch4261: xscreensaver-5.42-0061-open-new-window-for-man-when-using-gnome-terminal.patch Patch4261: xscreensaver-5.42-0061-open-new-window-for-man-when-using-gnome-terminal.patch
# free_gibson: fix order of freeing memory # test-password.c: add skel definition for clientmessage_response
Patch4401: xscreensaver-5.44-0101-free_gibson-fix-order-of-freeing-memory.patch Patch4501: xscreensaver-5.45-1001-test-password.c-add-skel-definition-for-clientmessa.patch
# ya_rand_init: avoid signed integer overflow by with recent pid_max value # asm6502.c/immediate: readd free() call accidentally removed during gcc warnings fix
Patch4402: xscreensaver-5.44-0102-ya_rand_init-avoid-signed-integer-overflow-by-with-r.patch Patch4502: xscreensaver-5.45-0002-asm6502.c-immediate-readd-free-call-accidentally-rem.patch
# beats/draw_beats: avoid integer overflow by multiplication
Patch4503: xscreensaver-5.45-0003-beats-draw_beats-avoid-integer-overflow-by-multiplic.patch
# xscreensaver-systemd: fix blurb strncpy
Patch4504: xscreensaver-5.45-0004-xscreensaver-systemd-fix-blurb-strncpy.patch
# recanim.c: fix up -Wformat-overflow warning
Patch4505: xscreensaver-5.45-0005-recanim.c-fix-up-Wformat-overflow-warning.patch
# asm6502.c/newAsmLine: shut up -Wstringop warning
Patch4506: xscreensaver-5.45-0006-asm6502.c-newAsmLine-shut-up-Wstringop-warning.patch
# lock.c/draw_passwd_window: show logo and ok button
Patch4507: xscreensaver-5.45-0007-lock.c-draw_passwd_window-show-logo-and-ok-button.patch
# test-screens.c: add skel XA_SCREENSAVER_VERSION definition
Patch4551: xscreensaver-5.45-0051-test-screens.c-add-skel-XA_SCREENSAVER_VERSION-defin.patch
#
# gcc warning cleanup
# Some cppcheck cleanup
# #
# Debugging patch # Debugging patch
# Not apply by default # Not apply by default
@ -94,6 +146,7 @@ BuildRequires: cppcheck
BuildRequires: libasan BuildRequires: libasan
BuildRequires: libubsan BuildRequires: libubsan
%endif %endif
BuildRequires: make
BuildRequires: git BuildRequires: git
BuildRequires: autoconf BuildRequires: autoconf
BuildRequires: automake BuildRequires: automake
@ -109,7 +162,9 @@ BuildRequires: sed
# BuildRequires: xdg-utils # BuildRequires: xdg-utils
BuildRequires: xorg-x11-proto-devel BuildRequires: xorg-x11-proto-devel
# extrusioni # extrusioni
#BuildRequires: libgle-devel %if 0%{?fedora} >= 13
BuildRequires: libgle-devel
%endif
BuildRequires: libX11-devel BuildRequires: libX11-devel
BuildRequires: libXScrnSaver-devel BuildRequires: libXScrnSaver-devel
BuildRequires: libXext-devel BuildRequires: libXext-devel
@ -124,10 +179,8 @@ BuildRequires: libpng-devel
# Write explicitly # Write explicitly
BuildRequires: libXrandr-devel BuildRequires: libXrandr-devel
BuildRequires: libXt-devel BuildRequires: libXt-devel
%if 0%{?fedora} <= 30
# libXxf86misc removed from F-31 # libXxf86misc removed from F-31
BuildRequires: libXxf86misc-devel #BuildRequires: libXxf86misc-devel
%endif
BuildRequires: libXxf86vm-devel BuildRequires: libXxf86vm-devel
# XScreenSaver 5.31 # XScreenSaver 5.31
BuildRequires: libXft-devel BuildRequires: libXft-devel
@ -141,6 +194,10 @@ BuildRequires: libglade2-devel
%if 0%{?support_setcap} >= 1 %if 0%{?support_setcap} >= 1
BuildRequires: pkgconfig(libcap) BuildRequires: pkgconfig(libcap)
%endif %endif
# From F-33, enable systemd support
%if 0%{?support_systemd} >= 1
BuildRequires: pkgconfig(libsystemd)
%endif
%if 0%{?fedora} %if 0%{?fedora}
BuildRequires: %{default_text} BuildRequires: %{default_text}
%endif %endif
@ -157,10 +214,12 @@ Requires: %{_sysconfdir}/pam.d/system-auth
Requires: pam > %{pam_ver} Requires: pam > %{pam_ver}
# For xdg-open # For xdg-open
Requires: xdg-utils Requires: xdg-utils
%if ! %{split_getimage} %if (! %{split_getimage}) || 0%{?enable_appres}
Requires: xorg-x11-resutils Requires: appres
%endif %endif
Requires: xorg-x11-fonts-ISO8859-1-100dpi Requires: xorg-x11-fonts-ISO8859-1-100dpi
# For switch user wrapper
Requires: %{_sbindir}/pidof
%if 0%{?build_tests} < 1 %if 0%{?build_tests} < 1
# Obsoletes but not Provides # Obsoletes but not Provides
Obsoletes: xscreeensaver-tests < %{epoch}:%{version}-%{release} Obsoletes: xscreeensaver-tests < %{epoch}:%{version}-%{release}
@ -171,8 +230,9 @@ Summary: A base package for screensavers
%if 0%{?fedora} < 19 %if 0%{?fedora} < 19
Requires: %{name}-base = %{epoch}:%{version}-%{release} Requires: %{name}-base = %{epoch}:%{version}-%{release}
%endif %endif
# For appres, etc %if 0%{?enable_appres}
Requires: xorg-x11-resutils Requires: appres
%endif


%package extras %package extras
Summary: An enhanced set of screensavers Summary: An enhanced set of screensavers
@ -245,7 +305,7 @@ This package contains the bare minimum needed to blank and
lock your screen. The graphical display modes are the lock your screen. The graphical display modes are the
"xscreensaver-extras" and "xscreensaver-gl-extras" packages. "xscreensaver-extras" and "xscreensaver-gl-extras" packages.


%description -l fr base %description -l fr base
Un économiseur d'écran modulaire pour le système X Window. Un économiseur d'écran modulaire pour le système X Window.
Ce paquet contient le minimum vital pour éteindre et verouiller Ce paquet contient le minimum vital pour éteindre et verouiller
votre écran. Les modes d'affichages graphiques sont inclus votre écran. Les modes d'affichages graphiques sont inclus
@ -319,7 +379,7 @@ rm -f driver/XScreenSaver_ad.h
find . -name \*.c -exec chmod ugo-x {} \; find . -name \*.c -exec chmod ugo-x {} \;


%__git init %__git init
%__git config user.email "xscreensaver-owner@powerel.org" %__git config user.email "xscreensaver-owner@fedoraproject.org"
%__git config user.name "XScreenSaver owners" %__git config user.name "XScreenSaver owners"
%__git add . %__git add .
%__git commit -m "base" -q %__git commit -m "base" -q
@ -328,11 +388,17 @@ find . -name \*.c -exec chmod ugo-x {} \;
%__cat %PATCH21 | %__git am %__cat %PATCH21 | %__git am
%__cat %PATCH52 | %__git am %__cat %PATCH52 | %__git am


%__cat %PATCH3604 | %__git am
#%%__cat %PATCH3607 | %__git am #%%__cat %PATCH3607 | %__git am
%__cat %PATCH4261 | %__git am %__cat %PATCH4261 | %__git am
%__cat %PATCH4401 | %__git am
%__cat %PATCH4402 | %__git am %__cat %PATCH4501 | %__git am
%__cat %PATCH4502 | %__git am
%__cat %PATCH4503 | %__git am
%__cat %PATCH4551 | %__git am
%__cat %PATCH4504 | %__git am
%__cat %PATCH4505 | %__git am
%__cat %PATCH4506 | %__git am
%__cat %PATCH4507 | %__git am


#%%__cat %PATCH13501 | %%__git am #%%__cat %PATCH13501 | %%__git am


@ -395,16 +461,20 @@ change_option driver/XScreenSaver.ad.in \
splash=False \ splash=False \
ignoreUninstalledPrograms=True \ ignoreUninstalledPrograms=True \
textProgram=fortune\ -s \ textProgram=fortune\ -s \
%if 0%{?fedora} >= 12
textURL=%{default_URL} textURL=%{default_URL}
%endif
%__git commit -m "%PATCH_desc" -a %__git commit -m "%PATCH_desc" -a


# peepers: 5.39: too scary (mtasaka) # peepers: 5.39: too scary (mtasaka)
# headroom: 5.45: too scary (mtasaka)
%global PATCH_desc \ %global PATCH_desc \
# Disable the following hacks by default \ # Disable the following hacks by default \
# (disable, not remove) # (disable, not remove)
silence_hack driver/XScreenSaver.ad.in \ silence_hack driver/XScreenSaver.ad.in \
bsod flag \ bsod flag \
peepers \ peepers \
headroom \
%{nil} %{nil}
%__git commit -m "%PATCH_desc" -a %__git commit -m "%PATCH_desc" -a


@ -444,7 +514,7 @@ sed -i.manentry -e 's@man %%s@man 6x %%s 2>/dev/null || man 1 %%s @' \
%__git commit -m "%PATCH_desc" -a %__git commit -m "%PATCH_desc" -a


# Suppress rpmlint warnings. # Suppress rpmlint warnings.
# suppress about pam config (although this is # suppress about pam config (although this is
# not the fault of xscreensaver.pam ......). # not the fault of xscreensaver.pam ......).
# #
# From xscreensaver-5.15-10, no longer do this # From xscreensaver-5.15-10, no longer do this
@ -459,8 +529,10 @@ fi


%global PATCH_desc \ %global PATCH_desc \
# Fix for desktop-file-utils 0.14+ # Fix for desktop-file-utils 0.14+
%if 0%{?fedora} >= 9
sed -i.icon -e 's|xscreensaver\.xpm|xscreensaver|' \ sed -i.icon -e 's|xscreensaver\.xpm|xscreensaver|' \
driver/screensaver-properties.desktop.in driver/screensaver-properties.desktop.in
%endif
%__git commit -m "%PATCH_desc" -a || echo "Nothing changed" %__git commit -m "%PATCH_desc" -a || echo "Nothing changed"


%global PATCH_desc \ %global PATCH_desc \
@ -485,6 +557,11 @@ sed -i.delay -e 's| delay = 1| delay = 3|' driver/test-fade.c
sed -i.delay -e 's|60 \* 15|20|' driver/test-grab.c sed -i.delay -e 's|60 \* 15|20|' driver/test-grab.c
%__git commit -m "%PATCH_desc" -a %__git commit -m "%PATCH_desc" -a


# Well, clang misinterpretates how gcc / autoconf uses -Wunknown-warning-option ....
sed -i 's|-Wunknown-warning-option|-Wfoo-bar-baz|' ax_pthread.m4
%__git commit -m "Really use unknowing warning option" -a


aclocal aclocal
autoconf autoconf
autoheader autoheader
@ -511,40 +588,42 @@ export PATH=$(pwd):$PATH
ln -sf /bin/true xdg-open ln -sf /bin/true xdg-open
popd popd


export CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" # Set optflags first
export CFLAGS='%{optflags}'
export CXXFLAGS='%{optflags}'
export FFLAGS='%{optflags}'

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


%if 0%{?fedora} >= 24
export CFLAGS="$CFLAGS -Wno-long-long" export CFLAGS="$CFLAGS -Wno-long-long"
export CFLAGS="$CFLAGS -Wno-variadic-macros" export CFLAGS="$CFLAGS -Wno-variadic-macros"
%endif


%if 0%{?use_clang_as_cc} %if 0%{?use_clang_as_cc}
export CC=clang export CC=clang
export CFLAGS="$(echo $CFLAGS | sed -e 's|-fstack-protector-strong|-fstack-protector|')" export CFLAGS="$(echo $CFLAGS | sed -e 's|-fstack-protector-strong|-fstack-protector|')"
export CFLAGS="$(echo $CFLAGS | sed -e 's|-specs=[^ \t][^ \t]*||')" export CFLAGS="$(echo $CFLAGS | sed -e 's|-specs=[^ \t][^ \t]*||g')"
export CFLAGS="$(echo $CFLAGS | sed -e 's|-flto=auto -ffat-lto-objects |-flto |')"
export CFLAGS="$CFLAGS -Wno-gnu-statement-expression" export CFLAGS="$CFLAGS -Wno-gnu-statement-expression"
export LDFLAGS="$(echo $LDFLAGS %__global_ldflags | sed -e 's|-specs=[^ \t][^ \t]*||g')" export LDFLAGS="$(echo $LDFLAGS | sed -e 's|-specs=[^ \t][^ \t]*||g')"
%if 0%{?fedora} >= 33
export LDFLAGS="$LDFLAGS -flto"
%endif
%endif %endif


%if 0%{?use_gcc_strict_sanitize} %if 0%{?use_gcc_strict_sanitize}
export CC="gcc -fsanitize=address -fsanitize=undefined" export CC="${CC} -fsanitize=address -fsanitize=undefined"
%if 0%{?fedora} >= 24 export LDFLAGS="${LDFLAGS} -pthread"
export LDFLAGS="%__global_ldflags -pthread"
%endif
%if 0%{?use_gcc_trap_on_sanitize} %if 0%{?use_gcc_trap_on_sanitize}
export CC="$CC -fsanitize-undefined-trap-on-error" export CC="$CC -fsanitize-undefined-trap-on-error"
%endif %endif
# Currently -fPIE binary cannot work with ASAN on kernel 4.12 # Currently -fPIE binary cannot work with ASAN on kernel 4.12
# https://github.com/google/sanitizers/issues/837 # https://github.com/google/sanitizers/issues/837
export CFLAGS="$(echo $CFLAGS | sed -e 's|-specs=[^ \t][^ \t]*||')" export CFLAGS="$(echo $CFLAGS | sed -e 's|-specs=[^ \t][^ \t]*hardened[^ \t][^ \t]*||g')"
export LDFLAGS="$(echo $LDFLAGS %__global_ldflags | sed -e 's|-specs=[^ \t][^ \t]*||g')" export LDFLAGS="$(echo $LDFLAGS | sed -e 's|-specs=[^ \t][^ \t]*hardened[^ \t][^ \t]*||g')"
%endif %endif

%if 0%{?use_gcc_analyzer} %if 0%{?use_gcc_analyzer}
if [ "x${CC}" == x ] ; then
export CC=gcc
fi
export CC="${CC} -fanalyzer" export CC="${CC} -fanalyzer"
# make build log look clear # make build log look clear
%global _smp_mflags -j1 %global _smp_mflags -j1
@ -556,24 +635,22 @@ CONFIG_OPTS="$CONFIG_OPTS --with-text-file=%{default_text}"
CONFIG_OPTS="$CONFIG_OPTS --with-x-app-defaults=%{_datadir}/X11/app-defaults" CONFIG_OPTS="$CONFIG_OPTS --with-x-app-defaults=%{_datadir}/X11/app-defaults"
CONFIG_OPTS="$CONFIG_OPTS --disable-root-passwd" CONFIG_OPTS="$CONFIG_OPTS --disable-root-passwd"
CONFIG_OPTS="$CONFIG_OPTS --with-browser=xdg-open" CONFIG_OPTS="$CONFIG_OPTS --with-browser=xdg-open"

# From xscreensaver 5.12, login-manager option is on by default # From xscreensaver 5.12, login-manager option is on by default
# For now, let's enable it on F-14 and above # For now, let's enable it on F-14 and above
%if 0%{?fedora} >= 14
pushd TMPBINDIR pushd TMPBINDIR
ln -sf /bin/true gdmflexiserver # ln -sf /bin/true gdmflexiserver
install -cpm 0755 %{SOURCE13} .
CONFIG_OPTS="$CONFIG_OPTS --with-login-manager=xscreensaver-newlogin-wrapper"
popd popd
%else
CONFIG_OPTS="$CONFIG_OPTS --without-login-manager"
%endif
# Enable extrusion on F-13 and above # Enable extrusion on F-13 and above
%if 0%{?fedora} <= 12 # CONFIG_OPTS="$CONFIG_OPTS --with-gle" # default
CONFIG_OPTS="$CONFIG_OPTS --without-gle"
%endif
# Enable account type pam validation on F-18+, # Enable account type pam validation on F-18+,
# debian bug 656766 # debian bug 656766
%if 0%{?fedora} >= 18
CONFIG_OPTS="$CONFIG_OPTS --enable-pam-check-account-type" CONFIG_OPTS="$CONFIG_OPTS --enable-pam-check-account-type"
%endif
# xscreensaver 5.30 # xscreensaver 5.30
CONFIG_OPTS="$CONFIG_OPTS --with-record-animation" CONFIG_OPTS="$CONFIG_OPTS --with-record-animation"


@ -581,6 +658,10 @@ CONFIG_OPTS="$CONFIG_OPTS --with-record-animation"
CONFIG_OPTS="$CONFIG_OPTS --with-setcap-hacks" CONFIG_OPTS="$CONFIG_OPTS --with-setcap-hacks"
%endif %endif


%if 0%{?support_systemd}
CONFIG_OPTS="$CONFIG_OPTS --with-systemd"
%endif

# This is flaky: # This is flaky:
# CONFIG_OPTS="$CONFIG_OPTS --with-login-manager" # CONFIG_OPTS="$CONFIG_OPTS --with-login-manager"


@ -593,10 +674,24 @@ ln -s ../configure .
%configure $CONFIG_OPTS || { cat config.log ; sleep 10 ; exit 1; } %configure $CONFIG_OPTS || { cat config.log ; sleep 10 ; exit 1; }
rm -f configure rm -f configure


# Remove embedded build path
sed -i driver/XScreenSaver.ad -e "s|$(pwd)/TMPBINDIR/||"

%if %{update_po} %if %{update_po}
#( cd po ; make generate_potfiles_in update-po ) #( cd po ; make generate_potfiles_in update-po )
# ??? # ???
( cd po ; make generate_potfiles_in ; cp -p POTFILES.in .. ; export srcdir=.. ; make update-po ; rm -f ../POTFILES_in ) pushd po
make generate_potfiles_in
cp -p POTFILES.in ..
# Workaround for ui file
sed -i ../POTFILES.in POTFILES.in POTFILES \
-e '\@-demo\.ui@s|^\([ \t]*\)\(.*\)$|\1[type: gettext/glade]\2|'
make xscreensaver.pot srcdir=..
( export srcdir=.. ; make update-po )
rm -f ../POTFILES_in
popd


( cp -p ../po/*.po po/) ( cp -p ../po/*.po po/)
( ( cd ../po ; git add *.po ; git commit -m "po regenerated" ) || true ) ( ( cd ../po ; git add *.po ; git commit -m "po regenerated" ) || true )
%endif %endif
@ -616,6 +711,9 @@ EOF
fi fi
# Workaround end # Workaround end


# From 5.45: temporary workaround for installation issue
cp -p ../driver/xscreensaver-demo.ui driver/

%if 0%{?use_clang_analyze} < 1 %if 0%{?use_clang_analyze} < 1
# Workaround for ppc64 build failure # Workaround for ppc64 build failure
make -C ../hacks/images -j1 make -C ../hacks/images -j1
@ -656,21 +754,24 @@ cd ..


# test # test
# for now, build tests anyway (even if they are not to be installed) # for now, build tests anyway (even if they are not to be installed)
#%if %{build_tests}
%if 1
make tests -C driver make tests -C driver
%endif


%if 0%{?use_cppcheck} >= 1 %if 0%{?use_cppcheck} >= 1
cd .. cd ..
CPPCHECK_FLAGS="" CPPCHECK_FLAGS=""
CPPCHECK_FLAGS="$CPPCHECK_FLAGS --enable=all --std=c89 -U__STRICT_ANSI__" CPPCHECK_FLAGS="$CPPCHECK_FLAGS --enable=all --std=c89 -U__STRICT_ANSI__"
CPPCHECK_FLAGS="$CPPCHECK_FLAGS -I. -Iutils -Idriver -Ihacks -I$archdir -I$archdir/hacks/"
CPPCHECK_FLAGS="$CPPCHECK_FLAGS -I. -Iutils -Iutils/images -Idriver -Ihacks"
CPPCHECK_FLAGS="$CPPCHECK_FLAGS -I$archdir -I$archdir/driver -I$archdir/hacks"
CPPCHECK_FLAGS="$CPPCHECK_FLAGS -I$archdir/hacks/glx"
CPPCHECK_FLAGS="$CPPCHECK_FLAGS -I%{_includedir}" CPPCHECK_FLAGS="$CPPCHECK_FLAGS -I%{_includedir}"
# find stddef.h # find stddef.h
GCC_HEADER_PATH=$(echo '#include <stddef.h>' | gcc -E - | sed -n -e 's|^.*"\(.*\)stddef\.h".*$|\1|p' | head -n 1) GCC_HEADER_PATH=$(echo '#include <stddef.h>' | gcc -E - | sed -n -e 's|^.*"\(.*\)stddef\.h".*$|\1|p' | head -n 1)
CPPCHECK_FLAGS="$CPPCHECK_FLAGS -I$GCC_HEADER_PATH" CPPCHECK_FLAGS="$CPPCHECK_FLAGS -I$GCC_HEADER_PATH"
CPPCHECK_FLAGS="$CPPCHECK_FLAGS $(pkg-config --cflags gtk+-2.0 | sed -e 's|-pthread||')" CPPCHECK_FLAGS="$CPPCHECK_FLAGS $(pkg-config --cflags gtk+-2.0 | sed -e 's|-pthread||')"
# C default macros
CPPCHECK_FLAGS="$CPPCHECK_FLAGS $(echo "int foo; " | gcc -dM -E - | sed -n -e "s@^\#define \([^ ][^ ]*\) 1\$@-D\1@p")"
# xscreeensaver macros
CPPCHECK_FLAGS="$CPPCHECK_FLAGS -DSTANDALONE -DHAVE_CONFIG_H -DUSE_GL" CPPCHECK_FLAGS="$CPPCHECK_FLAGS -DSTANDALONE -DHAVE_CONFIG_H -DUSE_GL"


cppcheck $CPPCHECK_FLAGS . 2>&1 | tee cppcheck-result.log cppcheck $CPPCHECK_FLAGS . 2>&1 | tee cppcheck-result.log
@ -859,13 +960,13 @@ popd
# Leave autostart stuff installed (at least useful for LXDE), # Leave autostart stuff installed (at least useful for LXDE),
# but not show them by default for all DE # but not show them by default for all DE
# (bug 1266521) for F-27+ # (bug 1266521) for F-27+
%if 0%{?fedora} >= 12 %if 0%{?fedora} >= 12 || 0%{?el7} || 0%{?el8}
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/xdg/autostart mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/xdg/autostart
install -cpm 0755 %{SOURCE11} ${RPM_BUILD_ROOT}%{_libexecdir}/ install -cpm 0755 %{SOURCE11} ${RPM_BUILD_ROOT}%{_libexecdir}/
desktop-file-install \ desktop-file-install \
--vendor "" \ --vendor "" \
--dir ${RPM_BUILD_ROOT}%{_sysconfdir}/xdg/autostart \ --dir ${RPM_BUILD_ROOT}%{_sysconfdir}/xdg/autostart \
%if 0%{?fedora} >= 27 %if 0%{?fedora} >= 27 || 0%{?el8}
--add-only-show-in=X-NODEFAULT \ --add-only-show-in=X-NODEFAULT \
%else %else
--add-only-show-in=GNOME \ --add-only-show-in=GNOME \
@ -967,6 +1068,11 @@ chmod 0755 webcollage
echo "%%{_libexecdir}/%%{name}/webcollage.original" >> \ echo "%%{_libexecdir}/%%{name}/webcollage.original" >> \
$dd/extras.files $dd/extras.files


# install wrapper-script for switching user
install -cpm 0755 %{SOURCE13} ${RPM_BUILD_ROOT}%{_libexecdir}/%{name}
echo "%{_libexecdir}/%{name}/xscreensaver-newlogin-wrapper" >> $dd/base.files


# Make sure all files are readable by all, and writable only by owner. # Make sure all files are readable by all, and writable only by owner.
# #
chmod -R a+r,u+w,og-w ${RPM_BUILD_ROOT} chmod -R a+r,u+w,og-w ${RPM_BUILD_ROOT}
@ -976,7 +1082,7 @@ chmod -R a+r,u+w,og-w ${RPM_BUILD_ROOT}
%{_sbindir}/update-xscreensaver-hacks %{_sbindir}/update-xscreensaver-hacks
%endif %endif


%if 0%{?fedora} >= 18 %if 0%{?fedora} >= 18 || 0%{?el8}
# In the case that pam setting is edited locally by sysadmin: # In the case that pam setting is edited locally by sysadmin:
if ! grep -q '^account' %{_sysconfdir}/pam.d/xscreensaver if ! grep -q '^account' %{_sysconfdir}/pam.d/xscreensaver
then then
@ -1035,10 +1141,63 @@ exit 0
%endif %endif


%changelog %changelog
* Thu Apr 16 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-1 * Tue Mar 02 2021 Ding-Yi Chen <dchen@redhat.com> - 1:5.45-5
- Fix EPEL 8 & EPEL 7 build
- Remove appres from EL8 and EL7, because they don't have it.

* Sat Jan 30 2021 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.45-4
- Bump release and rebuild

* Thu Jan 28 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1:5.45-3.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

* Mon Dec 28 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.45-3
- Fix up gcc -Wstringop or -Wformat-overflow warnings
- Make xscreensaver logo or ok button appear on lock screen

* Fri Dec 11 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.45-2
- test-screens.c: add skel XA_SCREENSAVER_VERSION definition

* Thu Dec 10 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.45-1
- Update to 5.45
- asm6502.c/immediate: readd free() call accidentally removed during gcc warnings fix
- beats/draw_beats: avoid integer overflow by multiplication

* Tue Nov 17 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-12
- Clean up gcc10 warnings, especially for -Wstringop
- Clean up some warnings by cppcheck

* Mon Nov 9 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-11
- Another way to make LTO happy with respecting upstream advice

* Sat Nov 7 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-10
- Remove unneeded undefining to make LTO happy

* Thu Oct 22 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-9
- Fix BR for systemd: use pkgconfig(libsystemd)

* Tue Oct 20 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-8
- peepers / reset_floater : fix logic for choosing color

* Wed Oct 14 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-6
- Install experimental wrapper script for switching user (bug 1878730)

* Sat Oct 3 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-5
- FuzzyFlakesFreeFlake: avoid double free on subsequent calls
such as when ConfigureNotify event happens (bug 1884822)

* Fri Sep 25 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-4
- Some spec file cleanup, deleting conditions for no longer supported branches
- Use %%set_build_flags
- F-33+: enable systemd integration

* Tue Jul 28 2020 Adam Jackson <ajax@redhat.com> 1:5.44-3
- Requires appres not xorg-x11-resutils

* Thu Apr 16 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-2
- ya_rand_init: avoid signed integer overflow by with recent pid_max value - ya_rand_init: avoid signed integer overflow by with recent pid_max value


* Tue Mar 24 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-0 * Tue Mar 24 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.44-1
- Update to 5.44 - Update to 5.44
- free_gibson: fix order of freeing memory - free_gibson: fix order of freeing memory


@ -1389,7 +1548,7 @@ exit 0


* Wed Oct 24 2012 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.20-2 * Wed Oct 24 2012 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.20-2
- Kill dependency of -gss subpackages for gnome-screensaver - Kill dependency of -gss subpackages for gnome-screensaver
to make MATE desktop happy to make MATE desktop happy


* Wed Oct 17 2012 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.20-1 * Wed Oct 17 2012 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.20-1
- Update to 5.20 - Update to 5.20
@ -1437,7 +1596,7 @@ exit 0
- Update to 5.17 - Update to 5.17


* Thu Jun 21 2012 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.16-1 * Thu Jun 21 2012 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.16-1
- Update to 5.16 - Update to 5.16


* Mon Jun 18 2012 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.15-10 * Mon Jun 18 2012 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.15-10
- Enable account type pam validation on F-18+ (debian bug 656766) - Enable account type pam validation on F-18+ (debian bug 656766)
@ -1473,7 +1632,7 @@ exit 0


* Fri Sep 30 2011 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.15-1 * Fri Sep 30 2011 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.15-1
- Update to 5.15 - Update to 5.15

* Sat May 21 2011 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.14-1 * Sat May 21 2011 Mamoru Tasaka <mtasaka@fedoraproject.org> - 1:5.14-1
- 5.14 is released, with just fixing 5.13 DPMS issue - 5.14 is released, with just fixing 5.13 DPMS issue


@ -1720,7 +1879,7 @@ exit 0
fix bug 336331). fix bug 336331).


* Thu Oct 18 2007 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1:5.03-12 * Thu Oct 18 2007 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1:5.03-12
- Create -gl-base subpackage and split xscreensaver-gl-helper - Create -gl-base subpackage and split xscreensaver-gl-helper
into -gl-base subpackage so that external GL screensavers can into -gl-base subpackage so that external GL screensavers can
use it (bug 336331) use it (bug 336331)


@ -1831,7 +1990,7 @@ exit 0


* Fri Aug 18 2006 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1:5.00-17 * Fri Aug 18 2006 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1:5.00-17
- Very nasty segv problem was brought by me. Fixing...... - Very nasty segv problem was brought by me. Fixing......

* Thu Aug 10 2006 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1:5.00-16 * Thu Aug 10 2006 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1:5.00-16
- Move man entry to 6x (bug #197741) - Move man entry to 6x (bug #197741)


@ -1876,7 +2035,7 @@ exit 0
from current mock. from current mock.


* Wed Jun 7 2006 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1:5.00-6 * Wed Jun 7 2006 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1:5.00-6
- Another fixes of config files for ifsmap as reported to jwz - Another fixes of config files for ifsmap as reported to jwz
livejournal page. livejournal page.
- Update Japanese translation. - Update Japanese translation.
- Locale fix for xscreensaver-text. - Locale fix for xscreensaver-text.
@ -1933,10 +2092,10 @@ exit 0
* Wed Sep 28 2005 Ray Strode <rstrode@redhat.com> 1:4.22-18 * Wed Sep 28 2005 Ray Strode <rstrode@redhat.com> 1:4.22-18
- accept zero timeout values for suspend and off. - accept zero timeout values for suspend and off.
Patch from Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> Patch from Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp>
(bug 157501). (bug 157501).


* Fri Sep 23 2005 Ray Strode <rstrode@redhat.com> 1:4.22-17 * Fri Sep 23 2005 Ray Strode <rstrode@redhat.com> 1:4.22-17
- remove explicit dependency on xscreensaver-base for - remove explicit dependency on xscreensaver-base for
extras and gl-extras packages extras and gl-extras packages


* Fri Sep 16 2005 Ray Strode <rstrode@redhat.com> 1:4.22-16 * Fri Sep 16 2005 Ray Strode <rstrode@redhat.com> 1:4.22-16
@ -1962,10 +2121,10 @@ exit 0
- ignore unprintable characters in password dialog (bug 135966). - ignore unprintable characters in password dialog (bug 135966).


* Thu Aug 25 2005 Ray Strode <rstrode@redhat.com> 1:4.22-10 * Thu Aug 25 2005 Ray Strode <rstrode@redhat.com> 1:4.22-10
- Move man pages to section 6 (bug 166441). - Move man pages to section 6 (bug 166441).


* Wed Aug 24 2005 Ray Strode <rstrode@redhat.com> 1:4.22-9 * Wed Aug 24 2005 Ray Strode <rstrode@redhat.com> 1:4.22-9
- The only legitimate way to call realpath is with NULL - The only legitimate way to call realpath is with NULL
buffer (bug 165270). buffer (bug 165270).


* Fri Aug 19 2005 Ray Strode <rstrode@redhat.com> 1:4.22-8 * Fri Aug 19 2005 Ray Strode <rstrode@redhat.com> 1:4.22-8
@ -1981,11 +2140,11 @@ exit 0
- Update to xscreensaver 4.22. - Update to xscreensaver 4.22.


* Sun Jun 19 2005 Ray Strode <rstrode@redhat.com> 1:4.21-5 * Sun Jun 19 2005 Ray Strode <rstrode@redhat.com> 1:4.21-5
- Add build requires for desktop-file-utils (bug 160980). - Add build requires for desktop-file-utils (bug 160980).


* Wed May 11 2005 Ray Strode <rstrode@redhat.com> 1:4.21-4 * Wed May 11 2005 Ray Strode <rstrode@redhat.com> 1:4.21-4
- Allow configuration gui to support hacks with absolute paths - Allow configuration gui to support hacks with absolute paths
(bug 157417). (bug 157417).


* Mon May 09 2005 Ray Strode <rstrode@redhat.com> 1:4.21-3 * Mon May 09 2005 Ray Strode <rstrode@redhat.com> 1:4.21-3
- Use @libexecdir@/xscreensaver instead of @HACKDIR@ in - Use @libexecdir@/xscreensaver instead of @HACKDIR@ in
@ -2026,7 +2185,7 @@ exit 0
- Add utility xscreensaver-config-tool to make changing settings - Add utility xscreensaver-config-tool to make changing settings
easier (replaces the short lived xscreensaver-register-hack easier (replaces the short lived xscreensaver-register-hack
program). Use xscreensaver-config-tool to set default settings program). Use xscreensaver-config-tool to set default settings
instead of using patches. instead of using patches.
- Split up xscreensaver (fixes 121693). - Split up xscreensaver (fixes 121693).
- Make preferences dialog slightly more pretty - Make preferences dialog slightly more pretty
- Make lock dialog slightly more pretty - Make lock dialog slightly more pretty
@ -2034,7 +2193,7 @@ exit 0
* Fri Nov 26 2004 Than Ngo <than@redhat.com> 1:4.18-13 * Fri Nov 26 2004 Than Ngo <than@redhat.com> 1:4.18-13
- add patch to fix vroot bug and make xscreensaver working in KDE again. - add patch to fix vroot bug and make xscreensaver working in KDE again.
- get rid of webcollage, which often download porn images - get rid of webcollage, which often download porn images

* Wed Nov 10 2004 Ray Strode <rstrode@redhat.com> 1:4.18-11 * Wed Nov 10 2004 Ray Strode <rstrode@redhat.com> 1:4.18-11
- Add xscreensaver-register-hack program to make - Add xscreensaver-register-hack program to make
installing and uninstalling screensavers easier installing and uninstalling screensavers easier
@ -2045,7 +2204,7 @@ exit 0
(bug 100641) (bug 100641)


* Wed Nov 10 2004 Ray Strode <rstrode@redhat.com> 1:4.18-9 * Wed Nov 10 2004 Ray Strode <rstrode@redhat.com> 1:4.18-9
- Call pam_acct_mgmt() (might fix bug 137195) - Call pam_acct_mgmt() (might fix bug 137195)


* Tue Nov 9 2004 Ray Strode <rstrode@redhat.com> 1:4.18-8 * Tue Nov 9 2004 Ray Strode <rstrode@redhat.com> 1:4.18-8
- Give vidwhacker screensaver working defaults - Give vidwhacker screensaver working defaults
@ -2095,7 +2254,7 @@ exit 0
* Wed May 5 2004 Bill Nottingham <notting@redhat.com> 4.14-5 * Wed May 5 2004 Bill Nottingham <notting@redhat.com> 4.14-5
- config tweaks - config tweaks


* Wed Mar 31 2004 Karsten Hopp <karsten@redhat.de> 4.14-4 * Wed Mar 31 2004 Karsten Hopp <karsten@redhat.de> 4.14-4
- fix fortune stand-in (#115369) - fix fortune stand-in (#115369)


* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com> * Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
@ -2222,7 +2381,7 @@ exit 0
- Bump release + rebuild. - Bump release + rebuild.


* Tue May 22 2001 Havoc Pennington <hp@redhat.com> * Tue May 22 2001 Havoc Pennington <hp@redhat.com>
- putting in tree for David - putting in tree for David


* Tue May 22 2001 David Sainty <dsainty@redhat.com> * Tue May 22 2001 David Sainty <dsainty@redhat.com>
- added DPMS options to command line help - added DPMS options to command line help
@ -2361,7 +2520,7 @@ exit 0
* Mon Apr 5 1999 Bill Nottingham <notting@redhat.com> * Mon Apr 5 1999 Bill Nottingham <notting@redhat.com>
- remove setuid bit. Really. I mean it. - remove setuid bit. Really. I mean it.


* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com> * Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com>
- auto rebuild in the new build environment (release 3) - auto rebuild in the new build environment (release 3)


* Fri Mar 19 1999 Bill Nottingham <notting@redhat.com> * Fri Mar 19 1999 Bill Nottingham <notting@redhat.com>

Loading…
Cancel
Save