Le 2016-11-24 05:14, Jeremie Courreges-Anglas a écrit :
Solène Rapenne <[email protected]> writes:

There is a bug in games/slash which can be annoying, I'm using -current
at the moment of this mail. When you start the game and you want to
choose your character, whatever your pick, the game ends with abort trap
like this (where I pick A) =>

An Archeologist, a Barbarian, a Caveman, [..], or a Wizard?
  [A,B,C,D,E,F,G,H,I,K,L,M,N,P,R,S,T,U,V,W, or Q] AAbort trap

This does not simply stop the games (no process alive), it creates a
file named {a,b,c,d}lock.0 in the game dir. Once you reach a 4rd game
lock, the game will tell you that you "Too many hacks running now." and
you can't play until you remove the .0 files.

It's a stack buffer overflow, the problem is that a 128 bytes buffer is
used to build a string that spans the terminal width. The crash doesn't
trigger with a small terminal here, nor with the following patch.  1024
columns ought to be enough for anybody.


Index: Makefile
===================================================================
RCS file: /d/cvs/ports/games/slash/Makefile,v
retrieving revision 1.46
diff -u -p -r1.46 Makefile
--- Makefile    31 Mar 2015 09:44:48 -0000      1.46
+++ Makefile    24 Nov 2016 00:28:18 -0000
@@ -4,7 +4,7 @@ COMMENT =       dungeon explorin', hackin' gam

 DISTNAME =     slash-e8
 PKGNAME =      slash-3.2.2.e8
-REVISION =     4
+REVISION =     5
 CATEGORIES =   games

 MASTER_SITES = ftp://ftp.nethack.org/pub/nethack/oldver/3.2.2/src/ \
Index: patches/patch-include_global_h
===================================================================
RCS file: patches/patch-include_global_h
diff -N patches/patch-include_global_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-include_global_h      24 Nov 2016 02:51:17 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Bump QBUFSZ to cope for large terminals and avoid stack buffer
+overflows.
+
+--- include/global.h.orig      Thu Nov 24 03:49:47 2016
++++ include/global.h   Thu Nov 24 03:50:14 2016
+@@ -297,7 +297,7 @@ struct version_info {
+ #define DOORMAX               120     /* max number of doors per level */
+
+ #define BUFSZ         256     /* for getlin buffers */
+-#define QBUFSZ                128     /* for building question text */
++#define QBUFSZ                1024    /* for building question text */
+
+ #define PL_NSIZ               32      /* name of player, ghost, shopkeeper */
+ #define PL_CSIZ               32      /* sizeof pl_character */

Your patch fix my issue :-)

Also, it seems that ftp.nethack.org doesn't exist anymore, the hostname is not resolvable

Reply via email to