diff arogue5/rogue.c @ 75:19903deed392

arogue5: fix the crash when checking prices in shops. A buffer called curpurch, which stores a description of an item in a trading post which the player might be interested in, was only 15 bytes. It was overflowing into oldrp, a room pointer, leading to segfaults. The size of curpurch has been increased to LINELEN*2, which matches the size of prbuf, which is returned by inv_name and then strcpy()'d to curpurch. As long as nothing overflows prbuf it should be safe now. NOTE that this breaks savefile compatibility.
author John "Elwin" Edwards <elwin@sdf.org>
date Wed, 05 Sep 2012 10:14:34 -0700
parents b27bd9f8c7d0
children ee250e3646fd
line wrap: on
line diff
--- a/arogue5/rogue.c	Mon Aug 20 20:30:19 2012 -0700
+++ b/arogue5/rogue.c	Wed Sep 05 10:14:34 2012 -0700
@@ -65,7 +65,7 @@
 int turns = 0;				/* Number of turns player has taken */
 int quest_item = 0;			/* Item player is looking for */
 char nfloors = -1;			/* Number of floors in this dungeon */
-char curpurch[15];			/* name of item ready to buy */
+char curpurch[LINELEN*2];		/* name of item ready to buy */
 char PLAYER = VPLAYER;			/* what the player looks like */
 char take;				/* Thing the rogue is taking */
 char prbuf[LINELEN*2];			/* Buffer for sprintfs */