From: Pasi Kallinen Date: Mon, 12 Dec 2016 15:42:02 +0000 (+0200) Subject: Impossible instead of segfault in cursed X-Git-Tag: NetHack-3.6.1_RC01~544 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=86df94b281dc02c2018735f84c8c25f88f82913e;p=nethack Impossible instead of segfault in cursed While fuzz testing, I've seen segfault a handful of times in here, coming from do_takeoff(). Looks like context.takeoff.what is stale, having WORN_BLINDF, but we're not wearing the blindfold anymore. Haven't been able to trace it down yet, so guard it with impossible. --- diff --git a/src/do_wear.c b/src/do_wear.c index e588e5413..15f00bbee 100644 --- a/src/do_wear.c +++ b/src/do_wear.c @@ -1484,6 +1484,10 @@ int cursed(otmp) register struct obj *otmp; { + if (!otmp) { + impossible("cursed without otmp"); + return 0; + } /* Curses, like chickens, come home to roost. */ if ((otmp == uwep) ? welded(otmp) : (int) otmp->cursed) { boolean use_plural = (is_boots(otmp) || is_gloves(otmp)