Here's the patch I came up with for this.

-- 
see shy jo
diff --new-file -ur tmp/xshisen-1.51-1/Makefile.in xshisen-1.51-1/Makefile.in
--- tmp/xshisen-1.51-1/Makefile.in      2003-10-29 11:49:58.000000000 -0500
+++ xshisen-1.51-1/Makefile.in  2005-01-27 01:56:36.000000000 -0500
@@ -17,7 +17,7 @@
 
 XSHISENLIB = @datadir@/xshisen
 XSHISENDAT = @sharedstatedir@
-CXXFLAGS = @CXXFLAGS@
+CXXFLAGS = @CXXFLAGS@ -DNO_GLOBAL_HIGHSCORE
 CPPFLAGS = $(CPPOPTS) @CPPFLAGS@
 CPPOPTS  =
 LDFLAGS  = @LDFLAGS@
diff --new-file -ur tmp/xshisen-1.51-1/debian/README.Debian 
xshisen-1.51-1/debian/README.Debian
--- tmp/xshisen-1.51-1/debian/README.Debian     1969-12-31 19:00:00.000000000 
-0500
+++ xshisen-1.51-1/debian/README.Debian 2005-01-27 02:44:17.000000000 -0500
@@ -0,0 +1,4 @@
+Note that in the Debian package of xshisen, support for system-wide score
+files is disabled. This was done because xshisen is not written very
+securely, and a system-wide score file required the program to be installed
+setgid games.
diff --new-file -ur tmp/xshisen-1.51-1/debian/changelog 
xshisen-1.51-1/debian/changelog
--- tmp/xshisen-1.51-1/debian/changelog 2005-01-19 15:21:19.000000000 -0500
+++ xshisen-1.51-1/debian/changelog     2005-01-27 02:47:32.000000000 -0500
@@ -1,3 +1,15 @@
+xshisen (1.51-1-1.2) unstable; urgency=HIGH
+
+  * NMU (at maintainer's request).
+  * Add NO_GLOBAL_HIGHSCORE define which crudely disables the support for
+    a global score file.
+  * Remove sgid bit. Closes: #291613, #292065
+  * Comment out code in postinst that set up /var/games/xshisen.scores,
+    but for now, do not delete that file on upgrade.
+  * Add README.Debian.
+
+ -- Joey Hess <[EMAIL PROTECTED]>  Thu, 27 Jan 2005 02:42:26 -0500
+
 xshisen (1.51-1-1.1) unstable; urgency=HIGH
 
   * NMU
diff --new-file -ur tmp/xshisen-1.51-1/debian/postinst 
xshisen-1.51-1/debian/postinst
--- tmp/xshisen-1.51-1/debian/postinst  2003-10-29 11:49:58.000000000 -0500
+++ xshisen-1.51-1/debian/postinst      2005-01-27 02:46:16.000000000 -0500
@@ -5,12 +5,12 @@
 
 case "$1" in
     configure)
-       if [ ! -f /var/games/xshisen.scores ]; then
-           cp -f /usr/share/games/xshisen/xshisen.scores \
-               /var/games/xshisen.scores
-           chown root.games /var/games/xshisen.scores
-           chmod 664 /var/games/xshisen.scores
-       fi
+#      if [ ! -f /var/games/xshisen.scores ]; then
+#          cp -f /usr/share/games/xshisen/xshisen.scores \
+#              /var/games/xshisen.scores
+#          chown root.games /var/games/xshisen.scores
+#          chmod 664 /var/games/xshisen.scores
+#h     fi
     ;;
     abort-upgrade|abort-remove|abort-deconfigure)
     ;;
diff --new-file -ur tmp/xshisen-1.51-1/debian/rules xshisen-1.51-1/debian/rules
--- tmp/xshisen-1.51-1/debian/rules     2003-10-29 11:49:58.000000000 -0500
+++ xshisen-1.51-1/debian/rules 2005-01-27 02:45:32.000000000 -0500
@@ -64,8 +64,7 @@
         DESTDIR=$(CURDIR)/debian/xshisen \
         XSHISENDAT=$(CURDIR)/debian/xshisen/usr/share/games/xshisen \
         XSHISENLIB=$(CURDIR)/debian/xshisen/usr/share/games/xshisen
-       chown root.games $(CURDIR)/debian/xshisen/usr/games/xshisen
-       chmod g+s $(CURDIR)/debian/xshisen/usr/games/xshisen
+       chown root.root $(CURDIR)/debian/xshisen/usr/games/xshisen
        chmod 644 
$(CURDIR)/debian/xshisen/usr/share/games/xshisen/xshisen.scores
 
 # Build architecture-independent files here.
diff --new-file -ur tmp/xshisen-1.51-1/main.C xshisen-1.51-1/main.C
--- tmp/xshisen-1.51-1/main.C   2003-10-29 11:53:41.000000000 -0500
+++ xshisen-1.51-1/main.C       2005-01-27 02:27:48.000000000 -0500
@@ -353,6 +353,7 @@
     delete[] scorefile;
 
     if (globRes.scoreOnly) {
+#ifndef NO_GLOBAL_HIGHSCORE
         sc->DisplayScore(initial_game_state);
 #if USE_MOTIF
         XtAddCallback(*sc, XmNokCallback, (XtCallbackProc)ExitCB, NULL);
@@ -360,6 +361,10 @@
         XtAddCallback(XtNameToWidget(*sc, "*ok_button"),
                       XtNcallback, (XtCallbackProc)ExitCB, NULL);
 #endif
+#else /* NO_GLOBAL_HIGHSCORE */
+       fprintf(stderr, "System score files not enabled.\n");
+       exit(1);
+#endif /* NO_GLOBAL_HIGHSCORE */
     }
     else {
         GetGameSize(initial_game_state, num_piece_x, num_piece_y);
diff --new-file -ur tmp/xshisen-1.51-1/menubar.C xshisen-1.51-1/menubar.C
--- tmp/xshisen-1.51-1/menubar.C        2002-07-08 01:37:11.000000000 -0400
+++ xshisen-1.51-1/menubar.C    2005-01-27 02:22:48.000000000 -0500
@@ -158,8 +158,13 @@
                   (XtCallbackProc)GameCB, (XtPointer)1);
     XtAddCallback(XtNameToWidget(menushell0, "button_2"), XtNcallback,
                   (XtCallbackProc)GameCB, (XtPointer)2);
+#ifdef NO_GLOBAL_HIGHSCORE
+    XtVaSetValues(XtNameToWidget(menushell0, "button_3"), XtNsensitive,
+                  False, NULL);
+#else
     XtAddCallback(XtNameToWidget(menushell0, "button_3"), XtNcallback,
                   (XtCallbackProc)GameCB, (XtPointer)3);
+#endif
     XtAddCallback(XtNameToWidget(menushell0, "button_4"), XtNcallback,
                   (XtCallbackProc)GameCB, (XtPointer)4);
     XtAddCallback(XtNameToWidget(menushell0, "button_5"), XtNcallback,
diff --new-file -ur tmp/xshisen-1.51-1/score.C xshisen-1.51-1/score.C
--- tmp/xshisen-1.51-1/score.C  2005-01-19 15:18:33.000000000 -0500
+++ xshisen-1.51-1/score.C      2005-01-27 02:59:34.000000000 -0500
@@ -374,6 +374,8 @@
     struct passwd *pw;
     char   namebuf[142], myname[NAMELEN+1], gecos[128], *po;
 
+#ifndef NO_GLOBAL_HIGHSCORE
+    
     s1 = scoreToRegister / 1000;
     ms_to_hms(scoreToRegister, h, m, s);
     pw = getpwuid(getuid());
@@ -425,6 +427,7 @@
     sprintf(rec[i].time, "%2.2d:%2.2d:%2.2d", tp->tm_hour, tp->tm_min, 
tp->tm_sec);
     if (writefile() == 0)
         DisplayScore(game);
+#endif /* NO_GLOBAL_HIGHSCORE */
 }
 
 void

Attachment: signature.asc
Description: Digital signature



Reply via email to