Commit Graph
10092 Commits
Author SHA1 Message Date
nhmall 36bb4334e8 Merge fixes from 'NetHack-3.6' into NetHack-3.7-Jan2020 2020-01-20 21:33:20 -05:00
nhmall 30fc4b9e05 windows vsprintf bit 2020-01-20 20:59:41 -05:00
nhmall 775519f851 more vsnprintf 2020-01-20 19:22:18 -05:00
nhmall d61bfc98b4 more vsnprintf 2020-01-20 18:14:19 -05:00
nhmall b6efb765dc update README and patchlevel.h 2020-01-20 16:58:12 -05:00
nhmall 92deddd6a3 use vsnprintf instead of vsprintf in pline.c 2020-01-20 16:09:00 -05:00
PatR f3def5c0b9 command line triggered buffer overruns
Prevent extremely long command line arguments from overflowing local
buffers in raw_printf or config_error_add.  The increased buffer
sizes they recently got to deal with long configuration file values
aren't sufficient to handle command line induced overflows.

choose_windows(core): copy and truncate the window_type argument in
case it gets passed to config_error_add().

process_options(unix): report bad values with "%.60s" so that vsprintf
will implicitly truncate when formatted by raw_printf().
2020-01-20 16:08:59 -05:00
nhmall 56be3361e3 update a sentence in README 2020-01-18 11:46:35 -05:00
nhmall 76dd55a7b0 fixes37.0 update 2020-01-18 11:43:12 -05:00
nhmall b537d36275 updated files from cron-NetHack-3.7 2020-01-18 11:37:45 -05:00
nhmall 585511e89e Merge 'NetHack-3.6' changes into NetHack-3.7-Jan2020 2020-01-18 11:35:26 -05:00
nhmall a8208b44c8 fixes update 2020-01-16 10:18:37 -05:00
Pasi Kallinen f4ab235b81 Prevent accessing outside the mons array
Fix another out-of-bounds error
Monster trying to decide if a tin could cure stoning looking at
a special or empty tin would do acidic(&mons[-1])
2020-01-16 10:14:16 -05:00
nhw_cron c8fbb3b7b1 This is cron-daily v1-Jan-14-2020. guidebook updated: doc/Guidebook.txt 2020-01-14 22:20:38 -05:00
nhw_cron f413248d79 This is cron-daily v1-Jan-14-2020. files updated: Files 2020-01-14 22:20:24 -05:00
nhmall d5174323eb Merge 'NetHack-3.6' updates into NetHack-3.7-Jan2020 2020-01-14 22:09:29 -05:00
nhmall 4b052f753e Merge branch 'NetHack-3.6-housekeeping-for-3.6.5' into NetHack-3.6 2020-01-14 21:58:55 -05:00
PatR deccf6a796 fix sym_val() buffer overrun fix
Fix a mistake in commit 74de7d31e0.
Copy+paste error resulted in 'strval + 1' when 'strval' is required.
2020-01-14 14:34:03 -08:00
nhw_cron b21b99d433 This is cron-daily v1-Jan-14-2020. manpages updated: mnh.txt 2020-01-14 11:55:59 -05:00
nhw_cron 466a126e39 This is cron-daily v1-Jan-14-2020. manpages updated: mn.txt 2020-01-14 11:55:45 -05:00
nhw_cron 144aabce94 This is cron-daily v1-Jan-14-2020. files updated: Files 2020-01-14 11:53:00 -05:00
nhw_cron 35634fab8e This is cron-daily v1-Jan-14-2020. manpages updated: recover.txt 2020-01-14 11:52:38 -05:00
nhw_cron 7ac4e0fd06 This is cron-daily v1-Jan-14-2020. manpages updated: nethack.txt 2020-01-14 11:52:19 -05:00
nhw_cron cc3570a7d9 This is cron-daily v1-Jan-14-2020. manpages updated: makedefs.txt 2020-01-14 11:52:00 -05:00
nhw_cron 36736f2cf7 This is cron-daily v1-Jan-14-2020. manpages updated: lev_comp.txt 2020-01-14 11:51:36 -05:00
nhw_cron e44e05df59 This is cron-daily v1-Jan-14-2020. manpages updated: dlb.txt 2020-01-14 11:51:14 -05:00
nhw_cron ed72eb71da This is cron-daily v1-Jan-14-2020. manpages updated: dgn_comp.txt 2020-01-14 11:50:59 -05:00
nhmall 41137101a4 documentation updates 2020-01-14 11:44:02 -05:00
nhmall a6c46bbd85 housekeeping items for 3.6.5 - first pass 2020-01-14 11:35:06 -05:00
nhmall 07f9e329b6 Merge changes from NetHack-3.6 into NetHack-3.7-Jan2020 2020-01-14 09:28:38 -05:00
PatR cdc598e8bd fix pline.c potential buffer overruns
Fix 'Bugs 4, 5, and 6' which all use a similar fix but would have
conflicts over '#define BIGBUFSZ' if committed separately.

Format ("short explanation %s", string_argument), where the
explanation always has modest length but the string is potentially
up to 4*BUFSZ in length, into a 5*BUFSZ buffer.  Then truncate the
result to at most BUFSZ-1 characters so that it can be safely passed
to interface-specific putstr() or raw_print().

Applies to pline(), raw_printf(), and config_error_add().  Also done
for impossible() although there's no evidence that its buffer could
be overflowed in a controlled manner.
2020-01-14 02:52:34 -08:00
PatR 74de7d31e0 fix sym_val() buffer overrun
Fix 'Bug 3' where too long SYMBOL=string in run-time config file could
overflow a local buffer and clobber the stack.

Valid value is only one character long after processing an 'escaped'
encoded character which can be at most 6 characters (plus terminator):
backslash M backslash and up three digits.  If/when UTF8 gets added
the number of digits will increase.  Use a truncated copy of the input
(substantially bigger than 6+1); ignore any excess.
2020-01-14 02:05:14 -08:00
PatR a842fda44c fix add_menu_coloring() buffer overrun
Fix 'Bug 2' where too long MENUCOLOR=string in run-time config file
could overflow a local buffer and clobber the stack.

Theoretically a menu coloring regular expression could require a
bigger buffer but I don't think we need to try to support that.
255 characters minus the amount needed to specify color and/or
attributes should be ample.
2020-01-13 19:26:53 -08:00
PatR c35139e9ce fixes36.5 2020-01-13 19:17:35 -08:00
PatR 6d5c32f38a groundwork
Fix one warning and reformat some of the recently added code.
2020-01-13 19:09:57 -08:00
nhw_cron e043478ac7 This is cron-daily v1-Jan-13-2020. guidebook updated: doc/Guidebook.txt 2020-01-13 16:44:18 -05:00
nhmall cad10295b1 Merge some bug1 fixes from NetHack-3.6 2020-01-13 15:55:01 -05:00
nhmall 25c9fb8d2f fixes update 2020-01-13 15:30:23 -05:00
nhmall d6183d065e windows intermediate file into .gitignore 2020-01-13 15:23:42 -05:00
nhmall 6397f0d895 remove unintended src file 2020-01-13 15:03:03 -05:00
nhmall 5b0f3ae7bf fix bug1
have string_for_opt() return the value string or empty_optstr to
provide some level of crash protection if some future added option
processing misbehaves. Callers of string_for_opt() and
string_for_env_opt() should always check for a match to empty_optstr.
2020-01-13 14:54:48 -05:00
nhmall bb715bc824 ignore lib folder 2020-01-13 11:25:38 -05:00
PatR c2060f9e8c more giant walking onto boulder feedback
autopick_testobj() needs to bypassed during move-without-pickup as
well as when autopicked is disabled.  I hope this is finally right.
2020-01-13 03:46:51 -08:00
PatR 4b7e9d67d3 rnd_class()
Guard against potential bad arguments:  first index greaer than last.
Return STRANGE_OBJECT instead of hardcoded 0 if it ever fails (which
should be impossible with good arguments).
2020-01-12 22:16:49 -08:00
PatR 2d35668c63 update novel fixes entry 2020-01-12 22:15:37 -08:00
PatR 3409546876 more random novels
Give statues 'real' spellbooks only.

Provide mkobj() a way to accomplish that instead of resorting to
mksobj(rnd_class()).
2020-01-12 22:02:36 -08:00
PatR caaf1b375a randonly occurring Discworld novels
Give 'novel' a 1 in 1000 chance of being created in place of each
random spellbook (except for hero's initial inventory and NPC
priests' monster inventory and divine reward for prayer--those all
force regular spellbooks; statue contents aren't among the
exceptions--those books can now be novels).  Shop inventory (where
first book or scroll shop created is guaranteed one novel) hasn't
been touched.  If there is any other special spellbook handling
somewhere, I've overlooked it.
2020-01-12 11:00:38 -08:00
PatR 92970bfffc spell maneuver correctly 2020-01-12 09:19:17 -08:00
PatR 07a2c1c813 fix github issue #279 - boulder feedback
Polymophed into a giant and moving onto a boulder's location could
yield "you easily pick it up" (without actually doing so) followed
by "you see a boulder here".  It would happen if autopickup was Off,
or if the 'm' move-without-autopickup prefix was used, while either
boulder was included in pickup_types (including when that is set
for 'all') or hero had thrown that particular boulder and
pickup_thrown was On.  The check for whether auto-pick should try
on an object relied on its caller verifying that autopickup was On.
pickup() does that for
 pickup() -> autopick() -> autopick_testobj()
but moverock() wasn't doing that for
 moverock() -> autopick_testobj()
so the logic controlling moverock's message was subverted.

I first thought that logic itself was incorrect and changed the
message.  This keeps the new message even though it turned out not
to be cause of the problem.

Fixes #279
2020-01-12 05:05:24 -08:00
nhmall 1efc2d8e5e support haggis when pluralizing thus avoiding haggi 2020-01-11 20:04:32 -05:00