bbsmail的問題...
在bbsmail裡面..
在 while (fgets(buf, sizeof(buf), stdin) && buf[0])裡面
有一段程式碼
if (!memcmp(buf, "From", 4))
{
if ((str = strchr(buf, '<')) && (ptr = strrchr(str, '>')))
{
if (str[-1] == ' ')
str[-1] = '\0';
.............
.............
如果信件寄過來的 From的那行是 From: <xxxs@xxx.xxx>
因為 str[-1]='\0' 也就是把buf終點設在 ":"
但是後面又有 一行程式 ptr = (char *) strchr(buf, ' ');
而 ptr 會得到 NULL,造成程式 segament fault
把 str[-1] = '\0'; 拿掉就ok
其實會有這樣的問題是因為在學校工作站寄信
他用的格式是 From: g913972 ee <g913972@ozz.nthu.edu.tw>
這樣是ok的,若是用他的webmail
則是 From: <g913972@ozz.nthu.edu.tw>
會掛點...
我有兩個疑問...一個是 RFC有限制From的格式嗎
如果有我順便去通知學校一下,如果沒有只能用改程式避免
另一個疑問是,位什麼會有 if (str[-1] == ' ')str[-1] = '\0';
是為了把buf變短好增加效能???,或者是RFC有規範呢?
謝謝:)
--
我想我需要在陌生的人群中
找一找已經模糊的自我
更需要在亂了拍子的哀傷樂聲中
調一調我和她的節奏
--
※ Origin: 崇先目光相對 <linshi.twbbs.org>
◆ From: 192.168.1.2
討論串 (同標題文章)
Maple 近期熱門文章
PTT數位生活區 即時熱門文章