回文章列表
作者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
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻