作者Kudo.bbs@cd.twbbs.org (喵喵小天使) 看板: itoc
標題Re: [問題] 用太寬的終端機導致斷線
時間中正築夢園 (2008/07/01 Tue 09:36:48)
剛好自己之前也遇到這個問題
所以今天心血來潮試著 debug 了一下
原因大概是在 menu.c:vs_head() 的 buffer overflow:
memset(buf, ' ', spc >>= 1);
buf[spc] = '\0';
這邊若是 spc 大於原本 buf 的長度,就會 buffer overflow
手邊已經沒有 FreeBSD 6 的環境可以測試比較
所以也不太清楚為什麼到了 FreeBSD 7 才有問題
不過應該跟 d_cols 有關
最簡單無腦的改法就是...把 buffer 加大 @@
希望能有長輩們指點這個問題出現的主因
這樣應該會有更適切的改法 :)
--- menu.c (revision 51)
+++ menu.c (working copy)
@@ -224,7 +224,7 @@
vs_head(title, mid)
char *title, *mid;
{
- char buf[40], ttl[60];
+ char buf[100], ttl[60];
int spc, len;
if (mid) /* xxxx_head() 都是用 vs_head(title, str_site); */
--
不想寫程式時,就愛摸東摸西 QQ
--
淡然如水
無形若風
--
* Origin: 中正築夢園 (CcuDream.twbbs.org) ★ From: 210.192.187.159