- NetHack 3.6.4 -- General information December 18, 2019
+ NetHack 3.6.5 -- General information January 2020
NetHack 3.6 is an enhancement to the dungeon exploration game NetHack,
which is a distant descendent of Rogue and Hack, and a direct descendent of
NetHack 3.4 as there was no NetHack 3.5 release.
-NetHack 3.6.4 is the official release of NetHack that follows NetHack 3.6.3
-and contains all bug fixes since 3.6.3, including one security-related fix for
-a vulnerability that affects NetHack versions 3.6.0, 3.6.1, 3.6.2, and 3.6.3.
+NetHack 3.6.5 is the official release of NetHack that follows NetHack 3.6.4
+and contains all bug fixes since 3.6.4, including some fixes for exploitable
+security-related vulnerabilities that affected NetHack versions between 3.6.0
+and 3.6.4.
-The file doc/fixes36.4 in the source distribution has a full list of fixes. The
+The file doc/fixes36.5 in the source distribution has a full list of fixes. The
text in there was written for the development team's own use and is provided
"as is", so please do not ask us to further explain the entries in that file.
Some entries might be considered "spoilers", particularly in the "new features"
Below you will find some other general notes that were not considered
spoilers:
- * fix potential buffer overflow when parsing run-time configuration file
- * GDBPATH and GREPPATH from sysconf or -D... on compilation command line were
- * being processed even if PANICTRACE was disabled but only being freed
- * at end of game when that was enabled
- * fix the article used in the message when your steed encounters a polymorph
- * trap
- * allow teleporting onto the vibrating square
- * message "your knapsack can't accomodate any more items" when picking stuff
- * up or removing such from container was inaccurate if there was some
- * gold pending; vary the message rather than add more convoluted pickup
- * code
- * dozen-ish assorted spelling/typo fixes in messages and source comments
- * wizard mode wishing for terrain would leave it unmapped if done while blind
- * wizard mode terrain wish could leave hero in water (severe vision limits)
- * or in lava (trapped, sinking) which wasn't there any more
- * flying hero can go down (via '>') holes or trap doors instead of escaping
- * trap
- * polymorphed hero hiding on the ceiling can now use '>' to unhide instead of
- * being told "you can't go down here"
- * fix compilation on platforms that split the ncurses and tinfo libraries
- * Windows: allow all game files to be on a portable device via the sysconf
- * option 'portable_device_paths'
+FIXME: Update depending on whether cherry-picks are included or not
+-- start cherry-pick entries
+ * fix accessing mons[-1] when trying to gate in a non-valid demon
+ * fix accessing mons[-1] when monster figures out if a tin cures stoning
+ * walking out of tethered-to-buried-object trap condition was supposed to
+ * reinstate punishment but wasn't finding the buried iron ball because
+ * the trap condition was cleared first to indicate escape; result was
+ * attached chain that got dragged around but had no ball attached
+--- end cherry-pick entries
+ * have string_for_opt() return empty_optstr on failure
+ * ensure existing callers of string_for_opt() check return value before using it
+ * fix potential buffer overflow in add_menu_coloring()0
+ * fix potential buffer overflow in sym_val()
+ * fix potential buffer overflow in pline(), raw_printf(), and config_error_add()
+ * Windows: incldues a fix from a 3.6.4 post-release update where
+ * OPTIONS=map_mode:fit_to_screen could cause a game start failure
- - - - - - - - - - -
.ds vr "NetHack 3.6
.ds f0 "\*(vr
.ds f1
-.ds f2 "December 18, 2019
+.ds f2 "January 14, 2020
.
.\" A note on some special characters:
.\" \(lq = left double quote
%.au
\author{Original version - Eric S. Raymond\\
(Edited and expanded for 3.6 by Mike Stephenson and others)}
-\date{December 18, 2019}
+\date{January 14, 2020}
\maketitle
/*
* Development status of this NetHack version.
*/
-#define NH_DEVEL_STATUS NH_STATUS_POSTRELEASE
+#define NH_DEVEL_STATUS NH_STATUS_RELEASED
#ifndef DEBUG /* allow tool chains to define without causing warnings */
#define DEBUG
/*
* PATCHLEVEL is updated for each release.
*/
-#define PATCHLEVEL 4
+#define PATCHLEVEL 5
/*
* Incrementing EDITLEVEL can be used to force invalidation of old bones
* and save files.
*/
#define EDITLEVEL 0
-#define COPYRIGHT_BANNER_A "NetHack, Copyright 1985-2019"
+#define COPYRIGHT_BANNER_A "NetHack, Copyright 1985-2020"
#define COPYRIGHT_BANNER_B \
" By Stichting Mathematisch Centrum and M. Stephenson."
/* COPYRIGHT_BANNER_C is generated by makedefs into date.h */
/****************************************************************************/
/* Version 3.6.x */
+/* Patch 5, January ??, 2020
+ *
+ * FIXME: update entries depending on whether the cherry-picks are included
+ * -- start cherry-pick entries
+ * fix accessing mons[-1] when trying to gate in a non-valid demon
+ * fix accessing mons[-1] when monster figures out if a tin cures stoning
+ * walking out of tethered-to-buried-object trap condition was supposed to
+ * reinstate punishment but wasn't finding the buried iron ball because
+ * the trap condition was cleared first to indicate escape; result was
+ * attached chain that got dragged around but had no ball attached
+ * -- end cherry-pick entries
+ * have string_for_opt() return empty_optstr on failure
+ * ensure existing callers of string_for_opt() check return value before using it
+ * fix potential buffer overflow in add_menu_coloring()0
+ * fix potential buffer overflow in sym_val()
+ * fix potential buffer overflow in pline(), raw_printf(), and config_error_add()
+ * Windows: incldues a fix from a 3.6.4 post-release update where
+ * OPTIONS=map_mode:fit_to_screen could cause a game start failure
+ */
+
/* Patch 4, December 18, 2019
*
* fix potential buffer overflow when parsing run-time configuration file
else
Strcpy(tmpbuf, "{current date+time}");
break;
- case 'v': /* version, eg. "3.6.4-0" */
+ case 'v': /* version, eg. "3.6.5-0" */
Sprintf(tmpbuf, "%s", version_string(verbuf));
break;
case 'u': /* UID */
*.p NHSUBST
-* NH_filestag=(file%s_for_Amiga_versions_-_untested_for_3.6.4)
+* NH_filestag=(file%s_for_Amiga_versions_-_untested_for_3.6.5)
-* NH_filestag=(file%s_for_Atari_version_-_untested_for_3.6.4)
+* NH_filestag=(file%s_for_Atari_version_-_untested_for_3.6.5)
-* NH_filestag=(file%s_for_BeOS_version_-_untested_for_3.6.4)
+* NH_filestag=(file%s_for_BeOS_version_-_untested_for_3.6.5)
Install.* NHSUBST
moveinit.pat NH_header=no
vesa.h NH_header=no
-* NH_filestag=(file%s_for_MSDOS_version_-_tested_for_3.6.4_via_partial_cross-compile_only)
+* NH_filestag=(file%s_for_MSDOS_version)
nhico.uu NH_filestag=(file%s_for_running_MSDOS_binary_under_Windows)
nhpif.uu NH_filestag=>nhico.uu
Makefile.* NHSUBST
-* NH_filestag=(file%s_for_OS/2_version_-_untested_for_3.6.4)
+* NH_filestag=(file%s_for_OS/2_version_-_untested_for_3.6.5)
lev_comp.h NH_header=no
Makefile.lib NH_header=no
-Makefile.lib NH_filestag=(file%s_for_MSDOS_and_OS/2_versions_-_untested_for_3.6.4)
-#termcap.uu NH_filestag=(file%s_for_MSDOS_and_OS/2_versions_-_untested_for_3.6.4)
+Makefile.lib NH_filestag=(file%s_for_MSDOS_and_OS/2_versions_-_untested_for_3.6.5)
+#termcap.uu NH_filestag=(file%s_for_MSDOS_and_OS/2_versions_-_untested_for_3.6.5)
termcap.uu NH_filestag=>Makefile.lib
-pcmain.c NH_filestag=(file_for_MSDOS,_OS/2,_Amiga,_and_Atari_versions_-_untested_for_3.6.4)
+pcmain.c NH_filestag=(file_for_MSDOS,_OS/2,_Amiga,_and_Atari_versions_-_untested_for_3.6.5)
-pcsys.c NH_filestag=(file%s_for_MSDOS,_OS/2_and_Atari_versions_-_tested_on_MSDOS_for_3.6.4_via_partial_cross-compile_only)
+pcsys.c NH_filestag=(file%s_for_MSDOS,_OS/2_and_Atari_versions_-_tested_on_MSDOS_for_3.6.5_via_partial_cross-compile_only)
pcunix.c NH_filestag=>pcsys.c
-NetHack.cnf NH_filestag=(file_for_MSDOS,_OS/2,_and_Atari_versions_-_untested_for_3.6.4)
+NetHack.cnf NH_filestag=(file_for_MSDOS,_OS/2,_and_Atari_versions_-_untested_for_3.6.5)
pctty.c NH_filestag=>NetHack.cnf
ioctl.c NH_filestag=(file%s_for_UNIX_and_Be_versions)
If you have old record and logfile entries from a previous NetHack version,
you might want to save copies before they get overwritten by the new empty
-files; old saved games and bones files from 3.6.0 through to 3.6.3 should
-work with 3.6.4 but even older saved games and bones files from 3.4.3 will
+files; old saved games and bones files from 3.6.0 through to 3.6.4 should
+work with 3.6.5 but even older saved games and bones files from 3.4.3 will
not. If you are installing from the RPM, there is no need to save the old
record and logfile; they are automatically preserved.
# Only available if NetHack was compiled with DUMPLOG
# Allows following placeholders:
# %% literal '%'
-# %v version (eg. "3.6.4-0")
+# %v version (eg. "3.6.5-0")
# %u game UID
# %t game start time, UNIX timestamp format
# %T current time, UNIX timestamp format
- Instructions for Building and Installing NetHack 3.6.4
+ Instructions for Building and Installing NetHack 3.6.5
on a VMS (aka OpenVMS) system
=========================================
0. Version 3.5.x was never publicly released.
1. Save files and bones files from 3.4.x and earlier versions
- will not work with 3.6.4, but save files and bones file from 3.6.0,
+ will not work with 3.6.5, but save files and bones file from 3.6.0,
through 3.6.4 should work. The scoreboard file (RECORD) from 3.6.x
or 3.4.x or 3.3.x will work.
# Other things that have to be reconfigured are in vmsconf.h,
# and config.h
-VERSION = 3.6.4
+VERSION = 3.6.5
MAKEDEFS = $(UTL)makedefs.exe;
$ ! vms/vmsbuild.com -- compile and link NetHack 3.6.* [pr]
-$ version_number = "3.6.4"
+$ version_number = "3.6.5"
$ ! $NHDT-Date: 1557701518 2019/05/12 22:51:58 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.23 $
$ ! Copyright (c) 2018 by Robert Patrick Rankin
$ ! NetHack may be freely redistributed. See license for details.
*.ce NHSUBST
*.mak NHSUBST
*.bat NHSUBST
-* NH_filestag=(file%s_for_Windows_CE_and_PocketPC_-_untested_for_3.6.4)
+* NH_filestag=(file%s_for_Windows_CE_and_PocketPC_-_untested_for_3.6.5)
-* NH_filestag=(header_file%s_for_Windows_CE_and_PocketPC_-_untested_for_3.6.4)
+* NH_filestag=(header_file%s_for_Windows_CE_and_PocketPC_-_untested_for_3.6.5)
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,4,0
- PRODUCTVERSION 3,6,4,0
+ FILEVERSION 3,6,5,0
+ PRODUCTVERSION 3,6,5,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
BEGIN
BLOCK "040904b0"
BEGIN
- VALUE "Comments", "NetHack 3.6.4 for Windows CE\0"
+ VALUE "Comments", "NetHack 3.6.5 for Windows CE\0"
VALUE "CompanyName", " \0"
VALUE "FileDescription", "nethackm\0"
- VALUE "FileVersion", "3, 6, 4, 0\0"
+ VALUE "FileVersion", "3, 6, 5, 0\0"
VALUE "InternalName", "nethackm\0"
- VALUE "LegalCopyright", "Copyright © 1985-2019\0"
+ VALUE "LegalCopyright", "Copyright © 1985-2020\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "nethackm.exe\0"
VALUE "PrivateBuild", "090914\0"
VALUE "ProductName", "NetHack\0"
- VALUE "ProductVersion", "3, 6, 4, 0\0"
+ VALUE "ProductVersion", "3, 6, 5, 0\0"
VALUE "SpecialBuild", "\0"
END
END
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,4,0
- PRODUCTVERSION 3,6,4,0
+ FILEVERSION 3,6,5,0
+ PRODUCTVERSION 3,6,5,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
BEGIN
BLOCK "040904b0"
BEGIN
- VALUE "Comments", "NetHack 3.6.4 for Smartphone 2002\0"
+ VALUE "Comments", "NetHack 3.6.5 for Smartphone 2002\0"
VALUE "CompanyName", " \0"
VALUE "FileDescription", "nethackm\0"
- VALUE "FileVersion", "3, 6, 4, 0\0"
+ VALUE "FileVersion", "3, 6, 5, 0\0"
VALUE "InternalName", "nethackm\0"
- VALUE "LegalCopyright", "Copyright © 1985-2019\0"
+ VALUE "LegalCopyright", "Copyright © 1985-2020\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "nethackm.exe\0"
VALUE "PrivateBuild", "090914\0"
VALUE "ProductName", "NetHack For Smartphone\0"
- VALUE "ProductVersion", "3, 6, 4, 0\0"
+ VALUE "ProductVersion", "3, 6, 5, 0\0"
VALUE "SpecialBuild", "\0"
END
END
Alex Kompel, Dion Nicolaas, Yitzhak Sapir, Derek S. Ray, Michael Allison,
Pasi Kallinen, Bart House, and Janet Walz contributed to the maintainance
-of the tty and graphical windows versions of NetHack 3.6.4.
+of the tty and graphical windows versions of NetHack 3.6.5.
You can build a TTY version of NetHack and a Windows Graphical
version. You can use one of the following build environments:
is set up for a 32-bit x86 version, but that's only because it will
run on the most number of existing Windows environments.
-NetHack's save files and bones files in the 3.6.4 release have not yet
+NetHack's save files and bones files in the 3.6.5 release have not yet
evolved enough to allow them to interchange between the 32-bit version
and the 64-bit version (or between different platforms). Hopefully
that will change in an upcoming release.
We have provided a Makefile for each of the following compilers:
- o Microsoft Visual Studio 2015 or 2017 C++ Compiler
+ o Microsoft Visual Studio 2017 or 2019 C++ Compiler
The Community Editions are fine and available at no cost
o MinGW 2.0 (with GCC 3.2)
#==============================================================================
# The version of the game this Makefile was designed for
-NETHACK_VERSION="3.6.4"
+NETHACK_VERSION="3.6.5"
# A brief version for use in macros
NHV1=$(subst .,,$(NETHACK_VERSION))
#==============================================================================
#
# The version of the game this Makefile was designed for
-NETHACK_VERSION="3.6.4"
+NETHACK_VERSION="3.6.5"
# A brief version for use in macros
NHV=$(NETHACK_VERSION:.=)
NAME NETHACK
-DESCRIPTION 'NetHack 3.6.4 for Windows'
+DESCRIPTION 'NetHack 3.6.5 for Windows'
EXETYPE WINDOWS
STUB 'WINSTUB.EXE'
CODE PRELOAD MOVEABLE DISCARDABLE
# Only available if NetHack was compiled with DUMPLOG
# Allows following placeholders:
# %% literal '%'
-# %v version (eg. "3.6.4-0")
+# %v version (eg. "3.6.5-0")
# %u game UID
# %t game start time, UNIX timestamp format
# %T current time, UNIX timestamp format
#endif
#if defined(UNIX) && !defined(LINT) && !defined(GCC_WARN)
-static const char SCCS_Id[] UNUSED = "@(#)makedefs.c\t3.6\t2019/12/17";
+static const char SCCS_Id[] UNUSED = "@(#)makedefs.c\t3.6\t2020/01/18";
#endif
/* names of files to be generated */
-* NH_filestag=(file%s_for_GEM_versions_-_untested_for_3.6.4)
+* NH_filestag=(file%s_for_GEM_versions_-_untested_for_3.6.5)
-* NH_filestag=(file%s_for_GNOME_versions_-_untested_for_3.6.4)
+* NH_filestag=(file%s_for_GNOME_versions_-_untested_for_3.6.5)
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,4,0
- PRODUCTVERSION 3,6,4,0
+ FILEVERSION 3,6,5,0
+ PRODUCTVERSION 3,6,5,0
FILEFLAGSMASK 0x1fL
#ifdef _DEBUG
FILEFLAGS 0x9L
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", "NetHack for Windows - Graphical Interface"
- VALUE "FileVersion", "3.6.4"
+ VALUE "FileVersion", "3.6.5"
VALUE "InternalName", "NetHackW"
- VALUE "LegalCopyright", "Copyright (C) 1985 - 2019. By Stichting Mathematisch Centrum and M. Stephenson. See license for details."
+ VALUE "LegalCopyright", "Copyright (C) 1985 - 2020. By Stichting Mathematisch Centrum and M. Stephenson. See license for details."
VALUE "OriginalFilename", "NetHackW.exe"
VALUE "PrivateBuild", "140606"
VALUE "ProductName", "NetHack"
- VALUE "ProductVersion", "3.6.4"
+ VALUE "ProductVersion", "3.6.5"
END
END
BLOCK "VarFileInfo"
/* Reading and writing settings from the registry. */
#define CATEGORYKEY "Software"
#define COMPANYKEY "NetHack"
-#define PRODUCTKEY "NetHack 3.6.4"
+#define PRODUCTKEY "NetHack 3.6.5"
#define SETTINGSKEY "Settings"
#define MAINSHOWSTATEKEY "MainShowState"
#define MAINMINXKEY "MainMinX"
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,4,0
- PRODUCTVERSION 3,6,4,0
+ FILEVERSION 3,6,5,0
+ PRODUCTVERSION 3,6,5,0
FILEFLAGSMASK 0x1fL
#ifdef _DEBUG
FILEFLAGS 0x9L
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", "NetHack for Windows - TTY Interface"
- VALUE "FileVersion", "3.6.4"
+ VALUE "FileVersion", "3.6.5"
VALUE "InternalName", "NetHack"
- VALUE "LegalCopyright", "Copyright (C) 1985 - 2019. By Stichting Mathematisch Centrum and M. Stephenson. See license for details."
+ VALUE "LegalCopyright", "Copyright (C) 1985 - 2020. By Stichting Mathematisch Centrum and M. Stephenson. See license for details."
VALUE "OriginalFilename", "NetHack.exe"
VALUE "ProductName", "NetHack"
- VALUE "ProductVersion", "3.6.4"
+ VALUE "ProductVersion", "3.6.5"
END
END
BLOCK "VarFileInfo"