If you set COLNO larger than BUFSZ, few places cause a buffer overrun.
Add a new buffer size definition, COLBUFSZ, which is the larger of
COLNO and BUFSZ, used in places that care about a screen-wide string.
#define TBUFSZ 300 /* g.toplines[] buffer max msg: 3 81char names */
/* plus longest prefix plus a few extra words */
+/* COLBUFSZ is the larger of BUFSZ and COLNO */
+#if BUFSZ > COLNO
+#define COLBUFSZ BUFSZ
+#else
+#define COLBUFSZ COLNO
+#endif
+
#define PL_NSIZ 32 /* name of player, ghost, shopkeeper */
#define PL_CSIZ 32 /* sizeof pl_character */
#define PL_FSIZ 32 /* fruit name */
}
{
- char dsc[BUFSZ];
+ char dsc[COLBUFSZ];
s_level *slev = Is_special(&u.uz);
Sprintf(dsc, "D:%d,L:%d", u.uz.dnum, u.uz.dlevel);
int x, y, glyph, skippedrows, lastnonblank;
int subset = TER_MAP | TER_TRP | TER_OBJ | TER_MON;
int default_glyph = cmap_to_glyph(g.level.flags.arboreal ? S_tree : S_stone);
- char buf[BUFSZ];
+ char buf[COLBUFSZ];
boolean blankrow, toprow;
/*
char *s;
if (!buf)
- *(buf = (char *) alloc(BUFSZ)) = '\0';
+ *(buf = (char *) alloc(COLBUFSZ)) = '\0';
if (!*str) {
s = eos(buf);