看板Maple
标 题bbsmail的问题...
发信站崇先目光相对 (Thu May 1 21:57:36 2003)
转信站Ptt!news.cs.nthu!linshi
在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: <
[email protected]>
因为 str[-1]='\0' 也就是把buf终点设在 ":"
但是後面又有 一行程式 ptr = (char *) strchr(buf, ' ');
而 ptr 会得到 NULL,造成程式 segament fault
把 str[-1] = '\0'; 拿掉就ok
其实会有这样的问题是因为在学校工作站寄信
他用的格式是 From: g913972 ee <
[email protected]>
这样是ok的,若是用他的webmail
则是 From: <
[email protected]>
会挂点...
我有两个疑问...一个是 RFC有限制From的格式吗
如果有我顺便去通知学校一下,如果没有只能用改程式避免
另一个疑问是,位什麽会有 if (str[-1] == ' ')str[-1] = '\0';
是为了把buf变短好增加效能???,或者是RFC有规范呢?
谢谢:)
--
我想我需要在陌生的人群中
找一找已经模糊的自我
更需要在乱了拍子的哀伤乐声中
调一调我和她的节奏
--
※ Origin: 崇先目光相对 <linshi.twbbs.org>
◆ From: 192.168.1.2