From 3109e4876e90d88c3b757f7dbf5a89eee595dbcb Mon Sep 17 00:00:00 2001 From: kcwu Date: Mon, 28 Feb 2005 09:38:41 +0000 Subject: bug fix: fix the potential of char overflow git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2563 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/stuff.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'mbbsd/stuff.c') diff --git a/mbbsd/stuff.c b/mbbsd/stuff.c index 3d3b90f8..3e44efdf 100644 --- a/mbbsd/stuff.c +++ b/mbbsd/stuff.c @@ -622,16 +622,18 @@ getkey(const char *fmt,...) return vmsg_lines(b_lines, msg); } +/* TODO 極少 caller 用到 format, 考慮拆開成 vmsgf 節省 cpu */ int vmsg(const char *fmt,...) { - char msg[256] = "\033[1;36;44m ◆ ", i; + char msg[256] = "\033[1;36;44m ◆ "; + int i=14; // 14=strlen(msg) va_list ap; va_start(ap, fmt); - i = vsnprintf(msg + 14, 128, fmt, ap); + i += vsnprintf(msg + i, 128, fmt, ap); va_end(ap); - for(i = i + 14; i < 71; i++) - msg[(int)i] = ' '; + for(; i < 71; i++) + msg[i] = ' '; strcat(msg + 71, "\033[33;46m \033[200m\033[1431m\033[506m[按任意鍵繼續]\033[201m \033[m"); return vmsg_lines(b_lines, msg); -- cgit v1.2.3